Onclick Event Handler zu DataGridViewCell hinzufügen...

31/10/2007 - 14:15 von HWeber | Report spam
Hallo,

ich habe ein DataGridView über ein Dataset befüllt und manuell eine Spalte
mit einem "Löschen"-Symbol hinzugefügt. Jetzt würde ich gerne einen
EventHandler auf die Tabellenzellen mit dem Löschensymbol legen, damit ich
Zeilen löschen kann, aber irgendwie steh ich auf dem Schlauch und kriege den
EventHandler nicht registriert... Kann mir jemand einen Tipp geben?

private void getBelegArtikel(string belegID)
{
string query = sql_belegartikel_query + " AND Belegnummer = '" +
belegID + "' ";
dataGridViewBelegArtikel.Columns.Clear();
SqlDataAdapter belegartikeladapter = new SqlDataAdapter(query,
sqlconnection);
belegartikeladapter.TableMappings.Add("Tabelle", "Artikel");
SqlCommandBuilder belegartikelcommand = new
SqlCommandBuilder(belegartikeladapter);
DataSet belegartikeldataset = new DataSet("Belegartikel");
belegartikeladapter.Fill(belegartikeldataset);
dataGridViewBelegArtikel.DataSource =
belegartikeldataset.Tables[0];
dataGridViewBelegArtikel.AllowUserToDeleteRows = true;
dataGridViewBelegArtikel.AllowUserToAddRows = false;
dataGridViewBelegArtikel.MultiSelect = false;
dataGridViewBelegArtikel.AllowUserToResizeRows = false;
dataGridViewBelegArtikel.AllowUserToResizeColumns = false;
dataGridViewBelegArtikel.Columns.Add(new
DataGridViewImageColumn()); // ist 5. Spalte /index [4]!!
for (int i = 0; i < dataGridViewBelegArtikel.RowCount; i++)
{
dataGridViewBelegArtikel.Rows[i].Cells[4].Value =
(System.Drawing.Image) new Bitmap(@"delete.jpg");
}
}
 

Lesen sie die antworten

#1 Frank Dzaebel
31/10/2007 - 21:15 | Warnen spam
Hallo H.,

dataGridViewBelegArtikel.Columns.Add(new
DataGridViewImageColumn()); // ist 5. Spalte /index [4]!!
for (int i = 0; i < dataGridViewBelegArtikel.RowCount; i++)
{ dataGridViewBelegArtikel.Rows[i].Cells[4].Value > (System.Drawing.Image) new Bitmap(@"delete.jpg");
}



Zunàchst: direkte Zahlen im Code durch Konstanten, oder
durch Variablen, die ggf. berechnet wurden, ersetzen:

int indexImgColumn = -2;

private void Form1_Load_1(object sender, EventArgs e)
{ // ...
indexImgColumn = dataGridViewBelegArtikel.Columns.Add(
new DataGridViewImageColumn());
for (int i = 0; i < dataGridViewBelegArtikel.RowCount; i++)
{
dataGridViewBelegArtikel.Rows[i].Cells[indexImgColumn].Value new Bitmap("delete.jpg");
}
}

// ==
Dann bzgl. des Click-Events macht man das ja normal
eh einfach nur einmal, egal ob Du da neue Spalten zufügst:

{ // ...
dataGridViewBelegArtikel.Click += new EventHandler(
dataGridViewBelegArtikel_Click);
}

void dataGridViewBelegArtikel_Click(object sender, EventArgs e)
{
if (dataGridViewBelegArtikel.CurrentCell.ColumnIndex
== indexImgColumn)
MessageBox.Show(dataGridViewBelegArtikel.CurrentCell.ToString());
}

// ==
Ggf. netter, eine DataGridViewButtonColumn nehmen,
ggf. ein".gif" wegen der Transparenz-Möglichkeiten:

[How to set image property of buttons in a DataGridViewButtonColumn]
https://forums.microsoft.com/MSDN/S...spx?PostID03578&SiteID=1

aber ist ja schon etwas komplexer.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen