我正在寻找一种方法来为程序提供导致ContextMenuStrip打开的控件。我正在为多个组合框分配相同的条带以重复使用它们,就像在课程开始时一样。
myComboBox.ContextMenuStrip = changevaluestrip;
这里我有“添加值”和“删除值”,当然每个都必须知道哪个组合框必须删除该值。我尝试用
做private void removeValueToolStrip_Click(object sender, EventArgs e)
{
ToolStripMenuItem usedbox = sender as ToolStripMenuItem;
var parent = usedbox.GetCurrentParent();
DialogResult res = MessageBox.Show("Do you really want to delete this value?", "Delete Value", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
//Delete it from the combobox it was sent from
}
}
但这并没有真正解决,只是给了我“删除价值”作为发件人......
答案 0 :(得分:1)
也许ContextMenuStrip.SourceControl就是你想要的。
答案 1 :(得分:0)
是的,@ KingKing是对的。您需要使用ContextMenuStrip.SourceControl
来实现此目的。
这是为你做的一段代码。
ToolStripMenuItem usedbox = sender as ToolStripMenuItem;
ContextMenuStrip parent = usedbox.GetCurrentParent() as ContextMenuStrip;
if (parent != null)
{
ComboBox combo = parent.SourceControl as ComboBox;
if (combo != null)
{
//use combobox here
}
}