Visual studio 2008 如何使用ContextMenuStript删除链接标签

Visual studio 2008 如何使用ContextMenuStript删除链接标签,visual-studio-2008,Visual Studio 2008,我已经动态创建了链接标签,现在我想通过右键单击相应的链接标签来删除它们中的任何一个。我尝试过使用上下文菜单条,但我无法删除任何链接标签。请帮我做这个 提前感谢您是否尝试处理MouseDown事件并将LinkLabel从sender参数获取到事件处理程序?从那里,您应该能够将其从其父控件集合中删除 private void removeToolStripMenuItem_Click(object sender, EventArgs e) { var lbl = this.contextMe

我已经动态创建了链接标签,现在我想通过右键单击相应的链接标签来删除它们中的任何一个。我尝试过使用上下文菜单条,但我无法删除任何链接标签。请帮我做这个


提前感谢

您是否尝试处理MouseDown事件并将LinkLabel从sender参数获取到事件处理程序?从那里,您应该能够将其从其父控件集合中删除

private void removeToolStripMenuItem_Click(object sender, EventArgs e)
{
    var lbl = this.contextMenuStrip1.Tag as LinkLabel;
    if (lbl != null)
        lbl.Parent.Controls.Remove(lbl);
}

private void linkLabel1_MouseDown(object sender, MouseEventArgs e)
{
    this.contextMenuStrip1.Tag = sender;
}
如果希望使用ContextMenuStrip进行用户交互,仍然可以处理LinkLabel的MouseDown事件,并将上次单击的实例存储在ContextMenuStrip的Tag属性中。然后,单击菜单项时,可以检索上次单击的链接标签,并继续将其从控件集合中删除

private void removeToolStripMenuItem_Click(object sender, EventArgs e)
{
    var lbl = this.contextMenuStrip1.Tag as LinkLabel;
    if (lbl != null)
        lbl.Parent.Controls.Remove(lbl);
}

private void linkLabel1_MouseDown(object sender, MouseEventArgs e)
{
    this.contextMenuStrip1.Tag = sender;
}

我试过使用您提供的代码,但现在toolStripmenu没有出现在linklable上:)我是否应该在创建linklable时添加toolstripmenuitem?这只是一个模板,供您使用。由于要在运行时创建LinkLabel控件,因此还需要在运行时添加事件处理程序。此外,还需要将每个LinkLabel的ContextMenuStrip属性设置为添加到设计器中的ContextMenuStrip实例。