检测没有选中的tabpage,但点击C#窗体表单应用程序

我正在尝试在Windows窗体应用程序中构build一个Web浏览器。我在关联菜单中添加了一个closures选项卡的选项。 我不希望右键点击选项卡,只需要出现上下文菜单。 这工作正常。 问题是当我点击closures选项卡前一个选项卡closures,而不是当前选项卡是前一个选项卡。 我试图通过获取tabpage的矩形位置,但似乎是所有选项卡相同。 请帮忙!

//this is my event handler for closing the tab private void closeToolStripMenuItem_Click(object sender, EventArgs e) { this.tabControlBrowser.TabPages.Remove(this.tabControlBrowser.SelectedTab); } 

你是正确的,因为你正在使用

 this.tabControlBrowser.TabPages.Remove(this.tabControlBrowser.SelectedTab); 

这将删除当前选定的选项卡,但不会删除您点击的选项卡页面。

请尝试下面的代码,希望它会帮助你前进

 TabPage _ClickedTab; public Form1() { InitializeComponent(); this.tabControl1.MouseClick += new MouseEventHandler(tabControl1_MouseClick); } void tabControl1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { this.contextMenuStrip1.Show(this.tabControl1, e.Location); Rectangle r2 = this.tabControl1.GetTabRect(0); foreach (TabPage item in this.tabControl1.TabPages) { Rectangle r = this.tabControl1.GetTabRect(tabControl1.TabPages.IndexOf(item)); if (rX < e.Location.X && e.Location.X < rX + r.Width && rY < e.Location.Y && e.Location.Y < rY + r.Height) { _ClickedTab = item; } } } } private void toolStripMenuItem3_Click(object sender, EventArgs e) { this.tabControl1.TabPages.Remove(_ClickedTab); } 

你可以用TabControl#GetTabRect返回的矩形测试鼠标的位置