■■■

2016年3月31日木曜日

DataGridViewでコンテキストメニューを表示する方法

DataGridViewでコンテキストメニューを表示する方法
VB.NET
dgv1.ContextMenuStrip = Me.ContextMenuStrip1

dgv1.Columns(0).ContextMenuStrip = Me.ContextMenuStrip2
dgv1.Columns(0).HeaderCell.ContextMenuStrip = Me.ContextMenuStrip2

dgv1.Rows(0).ContextMenuStrip = Me.ContextMenuStrip3

dgv1(0, 1).ContextMenuStrip = Me.ContextMenuStrip4
C#
dgv1.ContextMenuStrip = this.ContextMenuStrip1;

dgv1.Columns[0].ContextMenuStrip = this.ContextMenuStrip2;
dgv1.Columns[0].HeaderCell.ContextMenuStrip = this.ContextMenuStrip2;

dgv1.Rows[0].ContextMenuStrip = this.ContextMenuStrip3;

dgv1[0, 1].ContextMenuStrip = this.ContextMenuStrip4;
CellContextMenuStripNeeded、RowContextMenuStripNeededイベントでヒントを表示する方法
VB.NET
Private Sub dgv1_CellContextMenuStripNeeded( _
ByVal sender As Object, _
ByVal e As DataGridViewCellContextMenuStripNeededEventArgs) _
Handles dgv1.CellContextMenuStripNeeded
Dim dgv As DataGridView = CType(sender, DataGridView)
If e.RowIndex < 0 Then
e.ContextMenuStrip = Me.ContextMenuStrip1
ElseIf e.ColumnIndex < 0 Then
e.ContextMenuStrip = Me.ContextMenuStrip2
ElseIf TypeOf (dgv(e.ColumnIndex, e.RowIndex).Value) Is Integer Then
e.ContextMenuStrip = Me.ContextMenuStrip3
End If
End Sub
C#
private void dgv1_CellContextMenuStripNeeded(object sender,
DataGridViewCellContextMenuStripNeededEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (e.RowIndex < 0)
{
e.ContextMenuStrip = this.ContextMenuStrip1;
}
else if (e.ColumnIndex < 0)
{
e.ContextMenuStrip = this.ContextMenuStrip2;
}
else if (dgv[e.ColumnIndex, e.RowIndex].Value is int)
{
e.ContextMenuStrip = this.ContextMenuStrip3;
}
}
VB.NET
Private Sub dgv1_RowContextMenuStripNeeded( _
ByVal sender As Object, _
ByVal e As DataGridViewRowContextMenuStripNeededEventArgs) _
Handles dgv1.RowContextMenuStripNeeded
Dim dgv As DataGridView = CType(sender, DataGridView)
Dim boolVal As Object = dgv("
col1", e.RowIndex).Value
Console.WriteLine(boolVal)
If TypeOf boolVal Is Boolean AndAlso CBool(boolVal) Then
e.ContextMenuStrip = Me.ContextMenuStrip1
End If
End Sub
C#
private void dgv1_RowContextMenuStripNeeded(object sender,
DataGridViewRowContextMenuStripNeededEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
object boolVal = dgv["col1", e.RowIndex].Value;
Console.WriteLine(boolVal);
if (boolVal is bool && (bool)boolVal)
{
e.ContextMenuStrip = this.ContextMenuStrip1;
}
}














■■■