Feedback

C# - DataGridView mit Zeilen-Nummern

Veröffentlicht von am 10.10.2008
(3 Bewertungen)
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.
GFU-Schulungen  [Anzeige]

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

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));
		}
	}
}
Abgelegt unter DatagridView, Zeilennummer.

2 Kommentare zum Snippet

Günther Foidl schrieb am 10.10.2008:
@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:
Erledigt.
 

Logge dich ein, um hier zu kommentieren!