- - PR -
ContextMenuStripに関して
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-16 14:55
VB.NET2005にて
@DataGridViewで右クリック選択した行をSelected状態にし、 その状態でAContextMenuを出したいと思っています。 (Excelのような感じです) 調べたところ @に関してはCellMouseClickで選択Indexをとる方法で対応が出来ました。 Aの方法に関してもDataGridViewプロパティContextMenuStripに設定することで できたのですが、 個別に設定するとうまくいくのですが@、Aを両方実装するとAしか稼動しません。 両方実装は出来ないのでしょうか? | ||||
|
投稿日時: 2007-01-16 15:12
プロパティには設定せずに、右クリックのイベント時に ContextMenuStrip の Show メソッドを使用して表示するようにすればいいでしょう。
| ||||
|
投稿日時: 2007-01-16 17:49
ありがとうございます。
仰る方法でできたのですが、ContextMenuStrip がでる位置が 設定がうまくできませんでした。 以下のような事を試してみたのですが、 どれも、ContextMenuStripのみを実装したときのようにカーソルの近くに出ずに かなり遠くに しかも行を変更しても出る位置が変わりませんでした。。。 .show(e.x, e.y) .show(DataGridView, e.x, e.y) .show(e.Location.x, e.Location.y) .show(DataGridView, e.Location.x, e.Location.y) | ||||
|
投稿日時: 2007-01-16 19:20
どのコントロールの、どのイベントに書いて、どれを親コンテナとして ContextMenuStrio を表示していますか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-01-17 00:02
取得した座標と与える座標のそれぞれが 「スクリーン座標」なのか「クライアント座標」なのかを確認してください。 そして必要に応じてPointTo〜メソッドで変換してください。 | ||||
|
投稿日時: 2007-01-17 15:52
Control.MousePositionをShowの引数に渡すことで
成功しました。 有難う御座いました。 | ||||
|
投稿日時: 2008-07-19 07:58
MousePosition?そのようなプロパティが見つからないのですが
どのクラスのプロパティか説明していただけませんか? 調べてみたらこんなページを見つけました。 http://okwave.jp/qa2740989.html 位置を渡すとき contxtmenuStrip.Left - this.dataGridView1.Left - this.dataGridView1.RowHeaderWidth - this.Left Topも同じ と計算すると良いようです。 意図が違っていたらごめんなさい。 [ メッセージ編集済み 編集者: island_town 編集日時 2008-07-19 08:06 ] | ||||
|
投稿日時: 2008-07-19 15:58
staticなプロパティのようです。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.mouseposition.aspx 説明から察するところスクリーン座標ぽいですね。 [追記] 誤読しました。クライアント座標っぽいですね。 [ メッセージ編集済み 編集者: GENZO 編集日時 2008-07-19 16:00 ] |