检测未选中的tabpage但单击C#windows窗体应用程序

时间:2012-10-07 19:20:40

标签: c# windows forms tabcontrol

我正在尝试在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);   
    }

2 个答案:

答案 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返回的矩形测试鼠标的位置