【C#】データグリッドビュー上で右クリックしたときに位置に応じてコンテキストメニューの中身を変更したい
|Posted:2013/04/20 12:09|Category : .NET|
DataGridView上でクリックした位置によってコンテキストメニューの内容を変えたいと思ったのだがあまりうまくいかない。
色々試した結果
データグリッドビュー側のCellMouseClickなどのクリックイベントはコンテキストメニューのイベントがある状態だと右クリックしても呼ばれないことがわかった。
つまりコンテキストメニューの表示しか呼ばれない。
そこで、コンテキストメニューを関連付けずにCellMouseClickから表示を行うことにした。
このCellMouseClickイベントではどの行にカーソルがあるのかを取得して、その内容によって中身を変えている。 そして、コンテキストメニューのItemsメンバで表示テキストを変更している。
後は表示するだけなので、Showメソッドを呼べばいいのだが、ただ呼ぶだけでは表示される位置が画面の左上になってしまいとてもおかしくなる。
そこで、TopとLeftをクリック位置で移動させればよい。
ちなみに、Showの前で移動させてもShowで一度原点に戻ってしまうようである。
色々試した結果
データグリッドビュー側のCellMouseClickなどのクリックイベントはコンテキストメニューのイベントがある状態だと右クリックしても呼ばれないことがわかった。
つまりコンテキストメニューの表示しか呼ばれない。
そこで、コンテキストメニューを関連付けずにCellMouseClickから表示を行うことにした。
このCellMouseClickイベントではどの行にカーソルがあるのかを取得して、その内容によって中身を変えている。 そして、コンテキストメニューのItemsメンバで表示テキストを変更している。
後は表示するだけなので、Showメソッドを呼べばいいのだが、ただ呼ぶだけでは表示される位置が画面の左上になってしまいとてもおかしくなる。
そこで、TopとLeftをクリック位置で移動させればよい。
ちなみに、Showの前で移動させてもShowで一度原点に戻ってしまうようである。
- 関連記事
- 【.NET】コントロールの絶対座標を取得する
- 【C#】Ctrl+Cなどのショートカットキーが効かない
- 【C#】メニューストリップの標準項目挿入の罠?
- 【C#】データグリッドビュー上で右クリックしたときに位置に応じてコンテキストメニューの中身を変更したい
- DataGridViewでチェックボックスなどを表示する
- 【.NET】BitmapのGetPixelで画素値が取得できない??
- 【.NET】DataGridViewの行、列番号取得方法