Как мне узнать, на какой вкладке я щелкаю правой кнопкой в ​​winforms tabcontrol? - PullRequest
8 голосов
/ 20 сентября 2010

Я заставляю полосу контекстного меню появляться при щелчке правой кнопкой мыши по выбранной или невыбранной вкладке в полосе вкладок элемента управления winforms tab. Это будет закрывать и закрывать все, кроме этого, пока. В любом случае, мне нужно уметь фиксировать, на какой вкладке находится мышь, когда нажата правая кнопка мыши. Кто-нибудь знает как?

Другое решение, которое я бы принял, это решение, которое выбирает невыбранную вкладку правой кнопкой мыши перед отображением контекстного меню.

Ответы [ 3 ]

16 голосов
/ 20 сентября 2010

В вашем событии щелчка мышью вы можете добавить этот код, чтобы найти его, если tabs ваш tabcontrol

for (int i = 0; i < tabs.TabCount; ++i) {
     if (tabs.GetTabRect(i).Contains(e.Location)) {
         //tabs.Controls[i]; // this is your tab
     }
}
4 голосов
/ 07 апреля 2012

Это может помочь, оно фиксирует положение вашего щелчка правой кнопкой мыши, и если оно находится в прямоугольнике любой вкладки, эта вкладка будет выбрана и будет отображено правильное меню

private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
      if (e.Button == MouseButtons.Right)
    {
            for (int i = 0; i < tabs.TabCount; ++i)

                {

                if (tabs.GetTabRect(i).Contains(e.Location)) 
                     {

                tabControl1.SelectTab(i);

                this.contextMenuStrip1.Show(this.tabControl1, e.Location);

                     }

                }
    }
}

ЕстьПриколы:)

0 голосов
/ 20 сентября 2010

Параметр sender обработчика событий обычно дает объект, на который вы щелкнули.

void whatever_OnClick(object sender, EventArgs e) {
  var tab = sender as TabControlClassHere;
}
...