DatagridView - RowHeader - ContextMenu

18/07/2008 - 17:10 von Werner Perplies | Report spam
Hi,

wie kann ich der Rowheaderspalte ein ContextMenuStrip zuweisen?

Danke für Tipps.

Gruß
Werner
www.weepee.eu
 

Lesen sie die antworten

#1 Frank Dzaebel
18/07/2008 - 18:41 | Warnen spam
Hallo Werner,

wie kann ich der Rowheaderspalte ein ContextMenuStrip zuweisen?



Die RowHeader haben keine eigene Spalte beim DataGridView.

Ein Beispiel mit einer einzelnen Zeile

dgv.Columns.Add("Spalte1", "Spalte1");
dgv.Columns.Add("Spalte2", "Spalte2");
dgv.Rows.Add("Wert1", "Wert2"); dgv.Rows.Add("Wert3", "Wert4");
dgv.Rows[0].HeaderCell.ContextMenuStrip = contextMenuStrip1;

Ein Möglichkeit für alle RowHeader etwa:

private void dgv_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
DataGridView dgv = sender as DataGridView;
DataGridView.HitTestInfo hti = dgv.HitTest(e.X, e.Y);

if (hti.Type == DataGridViewHitTestType.RowHeader ||
hti.Type == DataGridViewHitTestType.TopLeftHeader)
{
contextMenuStrip1.Location = dgv.PointToScreen(e.Location);
contextMenuStrip1.Show(dgv, e.X, e.Y);
}
}
}

Den RowHeaderMouseClick würde ich hier eher nicht nehmen, da
man noch die Location zusàtzlich umrechnen muss.


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

Ähnliche fragen