TabControlのタブがクリックされるとマウスイベントが発生するが、どのタブがクリックされたかは分からない。
TabPageのクリックイベントはタブ部分をクリックしても発生しないようだ。 以下のメソッドは座標からタブのインデックスを取得する。これをイベントプロシージャに仕掛ければクリックされたタブを取得できる。
/// <summary>Point上のタブコントロールのタブ部分に対応したTabPageのインデックスを取得</summary>
/// <param name="point">インデックスを取得するPoint</param>
/// <returns>Point上にタブが無ければ-1が返ります。。</returns>
private int TabIndexFromPoint(TabControl tabControl ,Point point) {
for(int i = 0; i <= tabControl.TabPages.Count - 1; i++) {
if(tabControl.GetTabRect(i).Contains(point)) {
return i;
}
}
return -1;
}