0

我已经编写了代码以在右键单击我的标签页时显示上下文菜单。当用户从上下文菜单中单击“删除标签”时,我将如何实际删除标签页?我已经走到这一步了。(unloadProfile 是我的上下文菜单项)。我不确定如何获取上下文菜单关联的标签页以将其删除。任何帮助表示赞赏。

// My Context Menu
private void tabControl_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            // iterate through all the tab pages
            for (int i = 0; i < tabControl.TabCount; i++)
            {
                // get their rectangle area and check if it contains the mouse cursor
                Rectangle r = tabControl.GetTabRect(i);
                if (r.Contains(e.Location))
                {
                    // show the context menu here
                    this.contextMenuStrip1.Show(this.tabControl, e.Location);
                }
            }
        }
    }

// Context menu click event
private void unloadProfile_Click(object sender, EventArgs e)
    {
        // iterate through all the tab pages
        for (int i = 0; i < tabControl.TabCount; i++)
        {

        }
    }
4

1 回答 1

4

我认为这不是正确的方法,但它确实有效。

在 tabControl1_MouseClick(object sender, MouseEventArgs e) 事件中,将 menustrip 的 Tag 属性设置为选中的 TabPage。

// show the context menu here
this.contextMenuStrip1.Tag = this.tabControl1.TabPages[i];
this.contextMenuStrip1.Show(this.tabControl1, e.Location);

并在 removeTabToolStripMenuItem_Click(object sender, EventArgs e) 事件中使用 Tag 属性删除标签页

this.tabControl1.TabPages.Remove(this.contextMenuStrip1.Tag as TabPage);

空检查会很好:) 希望它有所帮助。

于 2011-02-16T01:36:48.020 回答