DataGridViewCellContextMenuStripNeededEventArgs クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


CellContextMenuStripNeeded イベントが発生するのは、DataGridView コントロールの DataSource プロパティが設定されているか、VirtualMode プロパティが true の場合のみです。
CellContextMenuStripNeeded イベントを処理すると、ユーザーがセルを右クリックするたびに、ハンドラで指定したショートカット メニューが表示されます。これは、セルの現在の状態または値に応じたショートカット メニューを表示する場合に便利です。
CellContextMenuStripNeeded イベントは、プログラムによって、またはユーザーがセルを右クリックしたときに、DataGridViewCell.ContextMenuStrip プロパティの値が取得されたときにも発生します。
ColumnIndex プロパティと RowIndex プロパティを使用すると、セルの状態または値を特定でき、さらにこの情報を使用して、ContextMenuStrip プロパティを設定できます。このプロパティは、イベントの値によってオーバーライドされるセルの ContextMenuStrip プロパティの値を使用して初期化されます。
大量のデータを処理するときは、CellContextMenuStripNeeded イベントを処理して、複数のセルに対してセルの ContextMenuStrip 値を設定することによるパフォーマンスの低下を防いでください。詳細については、「Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。
行の ContextMenuStrip プロパティを設定するか、DataGridView コントロールの RowContextMenuStripNeeded イベントを処理して、個別のセルではなく個別の行にショートカット メニューを指定することもできます。セルの ContextMenuStrip プロパティの設定は、行の ContextMenuStrip プロパティの設定をオーバーライドし、CellContextMenuStripNeeded イベントは、RowContextMenuStripNeeded イベントと行の ContextMenuStrip プロパティの設定の両方をオーバーライドします。ただし、セルのショートカット メニューに null 参照 (Visual Basic では Nothing) を指定すると、行のショートカット メニューがオーバーライドされるのを回避できます。

DataGridViewCellContextMenuStripNeededEventArgs クラスを使用して、行の共有を解除せずにショートカット メニューを設定するコード例を次に示します。
Private WithEvents wholeTable As New ToolStripMenuItem() Private WithEvents lookUp As New ToolStripMenuItem() Private strip As ContextMenuStrip Private cellErrorText As String Private Sub dataGridView1_CellContextMenuStripNeeded(ByVal sender As Object, _ ByVal e As DataGridViewCellContextMenuStripNeededEventArgs) _ Handles dataGridView1.CellContextMenuStripNeeded cellErrorText = String.Empty If strip Is Nothing Then strip = New ContextMenuStrip() lookUp.Text = "Look Up" wholeTable.Text = "See Whole Table" strip.Items.Add(lookUp) strip.Items.Add(wholeTable) End If e.ContextMenuStrip = strip End Sub Private Sub wholeTable_Click(ByVal sender As Object, ByVal e As EventArgs) Handles wholeTable.Click dataGridView1.DataSource = Populate("Select * from employees", True) End Sub Private theCellImHoveringOver As DataGridViewCellEventArgs Private Sub dataGridView1_CellMouseEnter(ByVal sender As Object, _ ByVal e As DataGridViewCellEventArgs) _ Handles dataGridView1.CellMouseEnter theCellImHoveringOver = e End Sub Private cellErrorLocation As DataGridViewCellEventArgs Private Sub lookUp_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lookUp.Click Try dataGridView1.DataSource = Populate("Select * from employees where " & _ dataGridView1.Columns(theCellImHoveringOver.ColumnIndex).Name & " = '" & _ dataGridView1.Rows(theCellImHoveringOver.RowIndex).Cells(theCellImHoveringOver.ColumnIndex).Value.ToString() & _ "'", True) Catch ex As SqlException cellErrorText = "Can't look this cell up" cellErrorLocation = theCellImHoveringOver End Try End Sub Private Sub dataGridView1_CellErrorTextNeeded(ByVal sender As Object, _ ByVal e As DataGridViewCellErrorTextNeededEventArgs) _ Handles dataGridView1.CellErrorTextNeeded If (Not cellErrorLocation Is Nothing) Then If e.ColumnIndex = cellErrorLocation.ColumnIndex AndAlso _ e.RowIndex = cellErrorLocation.RowIndex Then e.ErrorText = cellErrorText End If End If End Sub Private Function Populate(ByVal query As String, ByVal resetUnsharedCounter As Boolean) As DataTable If resetUnsharedCounter Then ResetCounter() End If ' Alter the data source as necessary Dim adapter As New SqlDataAdapter(query, _ New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" & _ "Initial Catalog=Northwind;Data Source=localhost")) Dim table As New DataTable() table.Locale = System.Globalization.CultureInfo.InvariantCulture adapter.Fill(table) Return table End Function Private count As New Label() Private unsharedRowCounter As Integer Private Sub ResetCounter() unsharedRowCounter = 0 count.Text = unsharedRowCounter.ToString() End Sub
private ToolStripMenuItem wholeTable = new ToolStripMenuItem(); private ToolStripMenuItem lookUp = new ToolStripMenuItem(); private ContextMenuStrip strip; private string cellErrorText; private void dataGridView1_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e) { cellErrorText = String.Empty; if (strip == null) { strip = new ContextMenuStrip(); lookUp.Text = "Look Up"; wholeTable.Text = "See Whole Table"; strip.Items.Add(lookUp); strip.Items.Add(wholeTable); } e.ContextMenuStrip = strip; } private void wholeTable_Click(object sender, EventArgs e) { dataGridView1.DataSource = Populate("Select * from employees", true); } private DataGridViewCellEventArgs theCellImHoveringOver; private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e) { theCellImHoveringOver = e; } private DataGridViewCellEventArgs cellErrorLocation; private void lookUp_Click(object sender, EventArgs e) { try { dataGridView1.DataSource = Populate("Select * from employees where " + dataGridView1.Columns[theCellImHoveringOver.ColumnIndex].Name + " = '" + dataGridView1.Rows[theCellImHoveringOver.RowIndex]. Cells[theCellImHoveringOver.ColumnIndex].Value + "'", true); } catch (SqlException) { cellErrorText = "Can't look this cell up"; cellErrorLocation = theCellImHoveringOver; } } private void dataGridView1_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e) { if (cellErrorLocation != null) { if (e.ColumnIndex == cellErrorLocation.ColumnIndex && e.RowIndex == cellErrorLocation.RowIndex) { e.ErrorText = cellErrorText; } } } private DataTable Populate(string query, bool resetUnsharedCounter) { if (resetUnsharedCounter) { ResetCounter(); } // Alter the data source as necessary SqlDataAdapter adapter = new SqlDataAdapter(query, new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost")); DataTable table = new DataTable(); table.Locale = System.Globalization.CultureInfo.InvariantCulture; adapter.Fill(table); return table; } private Label count = new Label(); private int unsharedRowCounter; private void ResetCounter() { unsharedRowCounter = 0; count.Text = unsharedRowCounter.ToString(); }
ToolStripMenuItem^ wholeTable; ToolStripMenuItem^ lookUp; System::Windows::Forms::ContextMenuStrip^ strip; String^ cellErrorText; void dataGridView1_CellContextMenuStripNeeded( Object^ /*sender*/ , DataGridViewCellContextMenuStripNeededEventArgs^ e ) { cellErrorText = String::Empty; if ( strip == nullptr ) { strip = gcnew System::Windows::Forms::ContextMenuStrip; lookUp->Text = L"Look Up"; wholeTable->Text = L"See Whole Table"; strip->Items->Add( lookUp ); strip->Items->Add( wholeTable ); } e->ContextMenuStrip = strip; } void wholeTable_Click( Object^ /*sender*/, EventArgs^ /*e*/ ) { dataGridView1->DataSource = Populate( L"Select * from employees", true ); } DataGridViewCellEventArgs^ theCellImHoveringOver; void dataGridView1_CellMouseEnter( Object^ /*sender*/, DataGridViewCellEventArgs^ e ) { theCellImHoveringOver = e; } DataGridViewCellEventArgs^ cellErrorLocation; void lookUp_Click( Object^ /*sender*/, EventArgs^ /*e*/ ) { try { dataGridView1->DataSource = Populate( String::Format( L"Select * from employees where {0} = '{1}'", dataGridView1->Columns[ theCellImHoveringOver->ColumnIndex ]->Name, dataGridView1->Rows[ theCellImHoveringOver->RowIndex ]->Cells[ theCellImHoveringOver->ColumnIndex ]->Value ), true ); } catch ( ... ) { cellErrorText = L"Can't look this cell up"; cellErrorLocation = theCellImHoveringOver; } } void dataGridView1_CellErrorTextNeeded( Object^ /*sender*/, DataGridViewCellErrorTextNeededEventArgs^ e ) { if ( cellErrorLocation != nullptr ) { if ( e->ColumnIndex == cellErrorLocation->ColumnIndex && e->RowIndex == cellErrorLocation->RowIndex ) { e->ErrorText = cellErrorText; } } } DataTable^ Populate( String^ query, bool resetUnsharedCounter ) { if ( resetUnsharedCounter ) { ResetCounter(); } // Alter the data source as necessary SqlDataAdapter^ adapter = gcnew SqlDataAdapter( query, gcnew SqlConnection( L"Integrated Security=SSPI;Persist Security Info=False;" L"Initial Catalog=Northwind;Data Source= localhost" ) ); DataTable^ table = gcnew DataTable; adapter->Fill( table ); return table; } Label^ count; int unsharedRowCounter; void ResetCounter() { unsharedRowCounter = 0; count->Text = unsharedRowCounter.ToString(); }

System.EventArgs
System.Windows.Forms.DataGridViewCellEventArgs
System.Windows.Forms.DataGridViewCellContextMenuStripNeededEventArgs


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataGridViewCellContextMenuStripNeededEventArgs メンバ
System.Windows.Forms 名前空間
DataGridView クラス
DataGridView.CellContextMenuStripNeeded イベント
DataGridView.DataSource プロパティ
DataGridView.VirtualMode プロパティ
DataGridView.OnCellContextMenuStripNeeded
DataGridViewCellContextMenuStripNeededEventHandler
DataGridViewCellContextMenuStripNeededEventArgs.ContextMenuStrip
DataGridViewCell.ContextMenuStrip プロパティ
DataGridView.RowContextMenuStripNeeded イベント
DataGridViewRow.ContextMenuStrip
ContextMenuStrip クラス
その他の技術情報
Windows フォーム DataGridView コントロールを拡張するための推奨される手順
DataGridViewCellContextMenuStripNeededEventArgs コンストラクタ
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Dim columnIndex As Integer Dim rowIndex As Integer Dim instance As New DataGridViewCellContextMenuStripNeededEventArgs(columnIndex, rowIndex)
public function DataGridViewCellContextMenuStripNeededEventArgs ( columnIndex : int, rowIndex : int )

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataGridViewCellContextMenuStripNeededEventArgs プロパティ

名前 | 説明 | |
---|---|---|
![]() | ColumnIndex | イベントが発生したセルの列インデックスを示す値を取得します。 ( DataGridViewCellEventArgs から継承されます。) |
![]() | ContextMenuStrip | CellContextMenuStripNeeded イベントの発生元であるセルのショートカット メニューを取得または設定します。 |
![]() | RowIndex | イベントが発生したセルの行インデックスを示す値を取得します。 ( DataGridViewCellEventArgs から継承されます。) |

関連項目
DataGridViewCellContextMenuStripNeededEventArgs クラスSystem.Windows.Forms 名前空間
DataGridView クラス
DataGridView.CellContextMenuStripNeeded イベント
DataGridView.DataSource プロパティ
DataGridView.VirtualMode プロパティ
DataGridView.OnCellContextMenuStripNeeded
DataGridViewCellContextMenuStripNeededEventHandler
DataGridViewCellContextMenuStripNeededEventArgs.ContextMenuStrip
DataGridViewCell.ContextMenuStrip プロパティ
DataGridView.RowContextMenuStripNeeded イベント
DataGridViewRow.ContextMenuStrip
ContextMenuStrip クラス
その他の技術情報
Windows フォーム DataGridView コントロールを拡張するための推奨される手順DataGridViewCellContextMenuStripNeededEventArgs メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

関連項目
DataGridViewCellContextMenuStripNeededEventArgs クラスSystem.Windows.Forms 名前空間
DataGridView クラス
DataGridView.CellContextMenuStripNeeded イベント
DataGridView.DataSource プロパティ
DataGridView.VirtualMode プロパティ
DataGridView.OnCellContextMenuStripNeeded
DataGridViewCellContextMenuStripNeededEventHandler
DataGridViewCellContextMenuStripNeededEventArgs.ContextMenuStrip
DataGridViewCell.ContextMenuStrip プロパティ
DataGridView.RowContextMenuStripNeeded イベント
DataGridViewRow.ContextMenuStrip
ContextMenuStrip クラス
その他の技術情報
Windows フォーム DataGridView コントロールを拡張するための推奨される手順DataGridViewCellContextMenuStripNeededEventArgs メンバ
CellContextMenuStripNeeded イベントのデータを提供します。
DataGridViewCellContextMenuStripNeededEventArgs データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | DataGridViewCellContextMenuStripNeededEventArgs | DataGridViewCellContextMenuStripNeededEventArgs クラスの新しいインスタンスを初期化します。 |

名前 | 説明 | |
---|---|---|
![]() | ColumnIndex | イベントが発生したセルの列インデックスを示す値を取得します。(DataGridViewCellEventArgs から継承されます。) |
![]() | ContextMenuStrip | CellContextMenuStripNeeded イベントの発生元であるセルのショートカット メニューを取得または設定します。 |
![]() | RowIndex | イベントが発生したセルの行インデックスを示す値を取得します。(DataGridViewCellEventArgs から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

関連項目
DataGridViewCellContextMenuStripNeededEventArgs クラスSystem.Windows.Forms 名前空間
DataGridView クラス
DataGridView.CellContextMenuStripNeeded イベント
DataGridView.DataSource プロパティ
DataGridView.VirtualMode プロパティ
DataGridView.OnCellContextMenuStripNeeded
DataGridViewCellContextMenuStripNeededEventHandler
DataGridViewCellContextMenuStripNeededEventArgs.ContextMenuStrip
DataGridViewCell.ContextMenuStrip プロパティ
DataGridView.RowContextMenuStripNeeded イベント
DataGridViewRow.ContextMenuStrip
ContextMenuStrip クラス
その他の技術情報
Windows フォーム DataGridView コントロールを拡張するための推奨される手順Weblioに収録されているすべての辞書からDataGridViewCellContextMenuStripNeededEventArgsを検索する場合は、下記のリンクをクリックしてください。

- DataGridViewCellContextMenuStripNeededEventArgsのページへのリンク