1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
namespace gfoidl.Tools.Controls
{
/// <summary>
/// DataGridView mit ZeilenNr
/// </summary>
public class gfDataGridView : DataGridView
{
[Category("Darstellung")]
[DefaultValue(true)]
[Description("Gibt an ob Zeilen-Nummern dargestellt werden sollen")]
public bool ZeilenNummern { get; set; }
//---------------------------------------------------------------------
public gfDataGridView()
{
// Setzen des Standardwerts für die automatische Eigenschaft.
this.ZeilenNummern = true;
}
//---------------------------------------------------------------------
/// <summary>
/// Zeichnet die ZeilenNr in den ZeilenHeader.
/// <para>
/// Die Spaltenbreite wird automatisch angepasst
/// </para>
/// </summary>
/// <param name="e"></param>
protected override void OnRowPostPaint(DataGridViewRowPostPaintEventArgs e)
{
base.OnRowPostPaint(e);
// Darstellung von Zeilennummern?
if (!this.ZeilenNummern) return;
// ZeilenNr - zur besseren Optik links mit Leerzeichen auffüllen:
string rowNumber =
(e.RowIndex + 1).ToString()
.PadLeft(this.RowCount.ToString().Length);
// Schriftgröße:
SizeF size = e.Graphics.MeasureString(rowNumber, this.Font);
// Breite des ZeilenHeaders anpassen:
if (this.RowHeadersWidth < (int)(size.Width + 20))
this.RowHeadersWidth = (int)(size.Width + 20);
// ZeilenNr zeichnen:
e.Graphics.DrawString(
rowNumber,
this.Font,
SystemBrushes.ControlText,
e.RowBounds.Location.X + 15,
e.RowBounds.Location.Y + ((e.RowBounds.Height - size.Height) / 2));
}
}
}
|