Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1562 | Anzahl registrierter User: 1893 | Besucher online: 342
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

DataGridView mit Zeilen-Nummern


Autor: Günther Foidl
Sprache: C#
Bewertung:
7.67 (2 votes)
Anzahl der Aufrufe: 9150
  
Kick it on dotnet-kicks.de  

Beschreibung:

Standardmäßig bietet das DataGridView keine Möglichkeit Zeilen-Nummern automatisch anzuzeigen.

Nachfolgend ein erweitertes DataGridView das die Anzeige von Zeilen-Nummern erlaubt. Diese werden im Zeilen-Header dargestellt.


Abgelegt unter: DatagridView, Zeilennummer.



C#
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));
		}
	}
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Günther Foidl schrieb am:  10.10.2008 22:42:42

@Jan Welker: Hallo, hab mich einloggen vergessen und so das Snippet als Gast veröffentlich. Kannst du das auf Günther Foidl änder? Danke!
Jan Welker schrieb am:  11.10.2008 00:28:34

Erledigt.


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.