C#メモ:右クリック・中クリックでのタブ選択

ここのところC#でのプログラミングがメインになっています。
最近ここの更新が少ないのは躓いているところがあってそっちばかり考えているから…(殴

躓いていたのは「右クリック・中クリックでのタブ選択方法」…。
C#にはどうやらTabPageには右クリックや中クリックでどのタブがクリックされたか判別できないようです。
いろいろ試してもネットや本で探しても解決策がなかなか見つからず困っていました。
ですが先ほど解決できたのでメモしておきます。

とりあえずコードから。
void tabCtrl_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right || e.Button == MouseButtons.Middle)
    {
        for (int i = 0; i < tabCtrl.TabCount; i++)
        {
            //タブとマウス位置を比較し、クリックしたタブを選択
            if (tabCtrl.GetTabRect(i).Contains(e.X, e.Y))
            {
                tabCtrl.SelectedTab = tabCtrl.TabPages[i];
                break;
            }
        }
    }
}
上記のコードはTabControlのMouseDownイベントから呼び出すメソッドになります。
これで右クリックと中クリックでのタブ選択ができるようになります。

MouseEventArgs eはマウスイベントのデータを表しています。
tabCtrl.GetTabRect(i)でタブの四角の範囲を取得しています。
tabCtrl.GetTabRect(i).Contains(e.X, e.Y))でタブの四角の範囲内にマウスクリック位置が入っていたらTrueを返しています。

ちなみにMouseClickイベントだと中クリックは取得できても右クリックは取得できないようです。

…他にもメモしたいこと沢山あるのだが…
…今作ってるの早く完成させたい気持ちからなかなか…
…他にわからないこともあるので時間はかかりそうです…orz


コメント
コメントする








    
この記事のトラックバックURL
トラックバック