C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VisualStudioの様にタブ右クリック→メニューには?


(過去ログ 27 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■12866 / inTopicNo.1)  VisualStudioの様にタブ右クリック→メニューには?
  
□投稿者/ 鈴木 (1回)-(2008/01/18(Fri) 20:16:23)

分類:[C#] 

お世話になります.
環境はVisualStudio2005のC#です.

TabContorolのタブ部分を右クリックして,VisualStudioやFireFoxの様にContextMenuStripを表示させるには,どうすれば良いのでしょうか?

ご教授願います.
宜しくお願いします.
引用返信 編集キー/
■12868 / inTopicNo.2)  Re[1]: VisualStudioの様にタブ右クリック→メニューには?
□投稿者/ シャノン (264回)-(2008/01/18(Fri) 20:47:06)
No12866 (鈴木 さん) に返信
> お世話になります.
> 環境はVisualStudio2005のC#です.
>
> TabContorolのタブ部分を右クリックして,VisualStudioやFireFoxの様にContextMenuStripを表示させるには,どうすれば良いのでしょうか?

1. TabControlのMouseUpイベントを捕まえる
2. TabControl.TabCountの回数だけループし、TabControl.GetTabRectでタブの座標を取得
3. MouseEventArgs.Location が、GetTabRect で得た座標の中にあったら、そのタブがクリックされている
4. タブに応じて適切なポップアップメニューを表示する

とかね。
GetTabRectやMouseEventArgs.LocationはTabControlのクライアント座標、メニューを出すのはスクリーン座標であることに注意。
引用返信 編集キー/
■12909 / inTopicNo.3)  Re[2]: VisualStudioの様にタブ右クリック→メニューには?
□投稿者/ Hirotow (149回)-(2008/01/20(Sun) 20:41:38)
No12868 (シャノン さん) に返信
> GetTabRectやMouseEventArgs.LocationはTabControlのクライアント座標、メニューを出すのはスクリーン座標であることに注意。
ContextMenuStripのShowメソッドの第2引数にTabControlのインスタンスを渡せば変換の手間を省けます。
ちなみにVSとFirefoxでは若干挙動が違うので書いておくと。
VS:
MouseDown
{
GetTabRectを使い何番目のタブか取得。
そのタブを選択(SelectTab)する。
「タブ上で右クリックされた」ことを示すフラグを立てる。
}
MouseUp
{
「タブ上で右クリックされた」ことを示すフラグが立っていればメニュー表示。
呼び出された関数はTabControlのSelectedインデックスを元に処理を行う。
}

Firefox:
MouseUp
{
GetTabRectを使い何番目のタブか取得。
タブの番号を変数に格納。
メニュー表示。
呼び出された関数は上記の変数を見て処理を行う。
}

#ちなみにFireFoxの表記は間違いです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -