- - PR -
TreeView で右クリックイベントの取得
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-06 20:17
お世話になってます。
.net(C#)WinAPPで開発をしています。 TreeViewでノード上で右クリック時にコピー・削除のコンテキストメニューを表示したいのですが、ノード自体にイベントがないので不可能なのでしょうか。 ご存知の方教えてください。よろしくお願いいたします。 | ||||
|
投稿日時: 2005-09-06 23:32
MouseDownイベントが用意されているはずです。
私のところでは、右クリック取れますけど? | ||||
|
投稿日時: 2005-09-06 23:32
イベントが無いということは無いと思いますが。。。
#確かに右クリックというイベントは無いですね。他のコントロールも。 ContextMenuプロパティにContextMenuオブジェクトを関連させる方法や MouseDown,MouseUpイベントでContextMenu.Showメソッドを実行する方法があります。 右クリックしてもボタンを離したら元の選択ノードへ選択が戻るので 個人的には、MouseDownで押されたボタンと位置を記憶して MouseUpで比較し一致したらContextMenuオブジェクトのShowメソッドを実行しています。 #一致したらというのはノードが一致したらという意味です。 | ||||
|
投稿日時: 2005-09-07 09:41
ありがとうございます。
TreeViewでのマウスイベントをひろって、そのときのクリック位置からノードが選択されたかどうか判別し、ノードがクリックされていたらコンテキストメニューを出す、ということですよね。 >MouseDownで押されたボタンと位置を記憶して MouseUpで比較し ご指摘いただかなかったら確実にぬけてました。ありがとうございます。 | ||||
|
投稿日時: 2005-09-07 09:57
後から見る人のための補足ッス。( `・ω・)
これは、今回、イベント引数からは取れないっすよね? GetNodeAt メソッドで取得できるんだったかな。 ついでに、SelectedNode が有効かどうかも見ておく必要があるのかな。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-03-20 16:59
連続で投稿してしまったため削除しましたorz[ メッセージ編集済み 編集者: まち 編集日時 2006-03-20 17:08 ] | ||||
|
投稿日時: 2006-03-20 17:01
大分前の投稿なので書き込むか迷ったのですが。。。
Showで呼び出す場合、右クリックの時のみにコンテキストメニューを表示したいなら、 マウスダウンのときにマウスのどのボタンが押されたかを示す値を取得する必要があります。 private MouseButtons mouseButtons; private void TreeView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { this.mouseButtons = e.Button; } [ メッセージ編集済み 編集者: まち 編集日時 2006-03-20 17:07 ] | ||||
|
投稿日時: 2006-03-20 18:14
MouseDown 時に選択させた方が自然に見えるかも。
TextBox 何かを見ると自クライアント領域外で MouseUp しても表示されます。 中途半端に合わせてあるだけにちょっと微妙な動きになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |