我已编写代码以在右键单击我的标签页时显示上下文菜单。当用户从上下文菜单中单击“删除标签”时,如何实际删除标签页?我已经走到了这一步。 (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++)
{
}
}
答案 0 :(得分:3)
我不认为这是一种正确的方法,但它确实有用。
在tabControl1_MouseClick(对象发送者,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(对象发件人,EventArgs e)事件中,使用Tag属性删除Tab页
this.tabControl1.TabPages.Remove(this.contextMenuStrip1.Tag as TabPage);
空检查会很好:)希望它有所帮助。