C# ContextMenuStrip.Items的缓慢关闭

C# ContextMenuStrip.Items的缓慢关闭,c#,performance,clone,C#,Performance,Clone,我有两个类,每个类都有自己的ContextMenuStrip。 由于每个对象都可以从另一个对象访问,我想将一个对象的每个ToolStripMenuItem嵌入到其他ContextMenuStrip的下拉列表中 对象类型为MAC和TCPIP 这是MACsContextMenuStrip的片段: ContextMenuStrip cms = new ContextMenuStrip(); foreach (TCPIP ip in AssignedTCPIPentries) { mi = ne

我有两个类,每个类都有自己的
ContextMenuStrip
。 由于每个对象都可以从另一个对象访问,我想将一个对象的每个
ToolStripMenuItem
嵌入到其他
ContextMenuStrip
下拉列表中

对象类型为
MAC
TCPIP
这是MACs
ContextMenuStrip
的片段:

ContextMenuStrip cms = new ContextMenuStrip();
foreach (TCPIP ip in AssignedTCPIPentries) {
    mi = new ToolStripMenuItem(ip.IP + " - " + ip.Hostname);
    for (int t = 0; t < ip.SingleItemContextMenue.Items.Count; t++) {
        mi.DropDown.Items.Add(ip.SingleItemContextMenue.Items[t]);
    }
    cms.Items.Add(mi);
}

PS:
foreach
由于枚举问题,在迭代
ContextMenuStrip.Items
时无法工作。但我也不明白原因。但是也许这与我的问题有关?

每次使用
ip.SingleItemContextMenue
getter时都会调用
SingleItemContextMenue

ContextMenuStrip cms = new ContextMenuStrip();
foreach (TCPIP ip in AssignedTCPIPentries) {
    mi = new ToolStripMenuItem(ip.IP + " - " + ip.Hostname);
    var ipSingleItemContextMenueItems = ip.SingleItemContextMenue.Items;     // get items

    for (int t = 0; t < ipSingleItemContextMenueItems.Count; t++) {
        mi.DropDown.Items.Add(ipSingleItemContextMenueItems[t]);
    }
    cms.Items.Add(mi);
}
ContextMenuStrip cms=newcontextmenustrip();
foreach(已分配的CPU中的TCPIP ip){
mi=新的ToolStripMenuItem(ip.ip+“-”+ip.Hostname);
var ipSingleItemContextMenueItems=ip.SingleItemContextMenue.Items;//获取项目
对于(int t=0;t
只需使用相同的菜单并更改菜单上显示的文本即可event@Slai我想我不明白你的意思?请给我详细解释一下。THX无需事先创建所有菜单和子菜单。它们可以在需要时动态创建。。就像在子项上鼠标悬停一样event@Slai可以,但子菜单不是预先创建的。这些是动态部分,当作为对象的属性调用时创建,可以在运行时更改,因此在ContextMenuStrip中根本不会创建项。(请参阅TCPIP代码段中的getter)
ContextMenuStrip cms = new ContextMenuStrip();
foreach (TCPIP ip in AssignedTCPIPentries) {
    mi = new ToolStripMenuItem(ip.IP + " - " + ip.Hostname);
    var ipSingleItemContextMenueItems = ip.SingleItemContextMenue.Items;     // get items

    for (int t = 0; t < ipSingleItemContextMenueItems.Count; t++) {
        mi.DropDown.Items.Add(ipSingleItemContextMenueItems[t]);
    }
    cms.Items.Add(mi);
}