1

WindowsフォームアプリケーションでWebブラウザを構築しようとしています。コンテキストメニューのタブを閉じるオプションを追加しました。右クリックでタブページを選択したくないので、コンテキストメニューだけを表示する必要があります。それはうまくいきます。問題は、[閉じる]タブをクリックすると、前のタブが選択されたものであるため、現在のタブではなく前のタブが閉じられることです。タブページの長方形の位置を取得してこれを理解しようとしましたが、それはすべてのタブで同じように見えます。助けてください!

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

2 に答える 2

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);
    }
于 2012-10-07T19:41:15.157 に答える
0

TabControl#GetTabRectによって返される長方形に対してマウスの位置をテストできます。

于 2012-10-07T20:01:42.080 に答える