[C#, DataGridView] Erstellen einer Button Spalte

Drucken
( 2 Votes )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 26.04.2013 Zuletzt aktualisiert am 03.05.2013 Geschrieben von Jonny132
In diesem Tutorial zeige ich euch wie ihr in einem DataGridView eine Button Column einfügt und bei einem Klick darauf reagieren könnt.

Dazu braucht ihr nur eine Form welche ein DataGridView enthaltet.

Form-Load - Ereignis:
    private void Form1_Load(object sender, EventArgs e)
    {
      DataTable table = new DataTable();
      table.Columns.Add("Text");

      for (int i = 0; i < 10; i++)
      {
        DataRow row = table.NewRow();
        row[0] = "Zeile " + i.ToString();
        table.Rows.Add(row);
      }

      DataGridViewButtonColumn bnCol = new DataGridViewButtonColumn();
      bnCol.Text = "Drück mich";
      bnCol.UseColumnTextForButtonValue = true;

      dataGridView1.DataSource = table;
      dataGridView1.Columns.Add(bnCol);

      dataGridView1.CellClick += new DataGridViewCellEventHandler(dataGridView1_CellClick);
    }
Zuerst erstellen wir uns ein DataTable und befüllen es mit Werten welches wir danach an das DataGridView binden können.
Um eine Spalte vom Typ Button zu bekommen, muss eine neue DataGridViewButtonColumn erstellt werden.
Indem wir den Text der Spalte und die Eigenschaft UseColumnTextForButtonValue auf true setzen, können wir dem Button einen Text geben.

Zu Schluss wird nur noch die DataSource des DataGrids an die DataTable gebunden und unsere DataGridViewButtonColumn an das Grid angehängt.

Startet ihr das Projekt nun, könnt ihr die Buttonspalte schon sehen.
Da in den meisten Fällen jedoch etwas passieren soll, wenn der Benutzer auf den Button klickt abbonieren wir zu guter letzt noch das CellClick - Ereignis des DataGridViews.

CellClick - Ereignis:
    void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
      if (e.ColumnIndex == 1)
      {
        DataRow row = ((DataRowView)dataGridView1.Rows[e.RowIndex].DataBoundItem).Row;
        
        MessageBox.Show("Sie haben die " + row[0].ToString() + " gedrückt");
      }
    }
Im CellClick - Event fragen wir zuerst den geklickten Columnindex ab den wir per EventArgs bekommen. Dieser sollte gleich der DataGridViewButtonColumn sein.

Dann wird die geklickte DataRow bzw. Reihe mittels des RowIndex herausgecasted.

In einer MessageBox geben wir nun den Text der ersten Spalte der geklickten Reihe aus.

DataGridViewButtonColumn Beispiel

Dieses Tutorial könnte ebenfalls interessant für Sie sein:
[C#, DataGridView] Erstellen einer Image Spalte

    Veröffentlichen Sie ihre Kommentare ...