我正在右键单击winforms tabcontrol选项卡条中的选定或未选定选项卡时显示上下文菜单条。它将会关闭,并且现在关闭所有这些。无论如何,我需要能够在按下右键时捕获鼠标所在的选项卡。谁知道怎么做?
我接受的另一个解决方案是在显示上下文菜单之前右键单击选择未选中的选项卡。
答案 0 :(得分:16)
在您的鼠标点击事件中,如果tabs
是您的tabcontrol
for (int i = 0; i < tabs.TabCount; ++i) {
if (tabs.GetTabRect(i).Contains(e.Location)) {
//tabs.Controls[i]; // this is your tab
}
}
答案 1 :(得分:4)
这可能会有所帮助,它会使用鼠标捕获右键单击的位置,如果它位于任何选项卡的矩形上,则会选择该选项卡并显示正确的菜单
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);
}
}
}
}
玩得开心:)
答案 2 :(得分:0)
事件处理程序的sender
参数通常会为您提供单击的对象。
void whatever_OnClick(object sender, EventArgs e) {
var tab = sender as TabControlClassHere;
}