datagridviewセル、rowheadersおよびcolumnheadersの別のコンテキストメニューを設定したいと思います。 これらの項目のいずれかを右クリックすると、別のコンテキストメニューが表示されるという考えがあります。私はこれをどのようにして行うのですか?datagridviewセル、rowheader、およびcolumnheaderのコンテキストメニュー
7
A
答えて
17
使用してのDataGridViewのMouseDown
イベントが右マウスがクリックされたかどうかをテストとするので、セル、行または列がクリックされたかどうかを決定するために関連HitTestInfo
プロパティを使用する場合。この情報を使用して、必要なContextMenuStripを表示します。
これは、これを行うMouseDown
イベントの例です。サンプルを試すには、フォーム上のDataGridViewと3つのContentMenuStripをドロップします。 ContentMenuStrips mnuCell、mnuRow、およびmnuColumnに名前を付けます。
Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim ht As DataGridView.HitTestInfo
ht = Me.DataGridView1.HitTest(e.X, e.Y)
If ht.Type = DataGridViewHitTestType.Cell Then
DataGridView1.ContextMenuStrip = mnuCell
mnuCell.Items(0).Text = String.Format("This is the cell at {0}, {1}", ht.ColumnIndex, ht.RowIndex)
ElseIf ht.Type = DataGridViewHitTestType.RowHeader Then
DataGridView1.ContextMenuStrip = mnuRow
mnuRow.Items(0).Text = "This is row " + ht.RowIndex.ToString()
ElseIf ht.Type = DataGridViewHitTestType.ColumnHeader Then
DataGridView1.ContextMenuStrip = mnuColumn
mnuColumn.Items(0).Text = "This is col " + ht.ColumnIndex.ToString()
End If
End If
End Sub
ここに私が項目のいるContextMenuStripの適切へのDataGridViewのいるContextMenuStripプロパティを割り当てるよ右(セル、行または列)をクリックします。 ContextMenuStripsの動作をさらにカスタマイズする方法を示すために、各ContentMenuStripsのメニュー項目にテキストを設定します。
1
DataGridViewのMouseDownイベントで、DataGridView.HitTestメソッドを使用して、何がクリックされたかを確認します。次に、クリックした内容に応じてコンテキストメニューを切り替えることができます。
関連する問題
- 1. Silverlightでテンプレート化されたRowHeaderとColumnHeaderを使用したDataGrid
- 2. コンテキストメニューおよびフィルタの問題
- 3. クライアント上のDataGridView、ADO.NET、バインディング、およびページング
- 4. DataGridView - DefaultCellStyle、rowsおよびcolumns priority
- 5. C#DataGridView FullRowSelectおよびDoubleClickイベント
- 6. DataGridviewセルを右クリックしてコンテキストメニューを表示する方法
- 7. xtragridセルおよび行の選択
- 8. DataGridViewでコンテキストメニューを開く
- 9. DataGridViewのColumnHeaderとしてCheckboxを持つ方法
- 10. Datagridview VB.Netの列より大きいおよび少ない列
- 11. DataGridViewからExcelおよびデータの周囲の境界にエクスポート
- 12. DataGridViewセル編集
- 13. DataGridViewの総セル数
- 14. のDataGridViewエディット・セルは
- 15. DataGridViewにTextおよびProgressBarsを設定する
- 16. WPFデータグリッドrowHeaderオブジェクト
- 17. DataGridViewのセルの値が別のセルより大きい場合
- 18. WPF DatagridのColumnHeaderより下のスクロール
- 19. DataGridView - "セル選択スタイル" - セルの編集
- 20. Excel marco vba - 値1および/または2のセルのチェック
- 21. WPF DataGrid RowHeader MouseEnter MouseEventHandler
- 22. のDataGridView:セルの検証
- 23. DataGridViewのセルにのみ
- 24. DataGridviewのセル内の行数
- 25. WinFormsのDataGridView編集セル
- 26. c#datagridviewセルの合計値
- 27. DataGridView Auto Risizingセルのフォントサイズ
- 28. コンテキストメニューからMVC追加領域およびコントローラオプションが見つかりません
- 29. Datagridviewセルのダブルクリックイベントをボタンから呼び出す方法は?
- 30. &&(論理および)および|| (if文)
ありがとうございます、私は3つのコンテキストメニューを持っています、行、列とセルのために1つ。私は行のコンテキストメニューをこの行に置きました。これは行です。これはまだ表示されている他の2つを無効にしますが、セルをクリックすると行コンテキストメニューが表示されます。 – Smith
@Smith私が必要と思うもので私の例を更新しました。 –