我正在尝试在Windows窗体应用程序中构建Web浏览器。我添加了关闭上下文菜单中的选项卡的选项。我不希望右键单击选项卡页面,只需要显示上下文菜单。这很好。问题是,当我单击关闭选项卡时,前一个选项卡关闭,而不是当前选项卡,因为前一个选项卡是选中的选项卡。我试图通过获取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);
}
答案 0 :(得分:2)
你是否正确,因为你正在使用
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 (r.X < e.Location.X && e.Location.X < r.X + r.Width && r.Y < e.Location.Y && e.Location.Y < r.Y + r.Height)
{
_ClickedTab = item;
}
}
}
}
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
this.tabControl1.TabPages.Remove(_ClickedTab);
}
答案 1 :(得分:0)
您可以针对TabControl#GetTabRect返回的矩形测试鼠标的位置