在 WinForms 中的 MenuStrip 和 DropDownItems 中添加和删除 ToolStripMenuItem

发布于 2024-09-29 22:33:21 字数 440 浏览 3 评论 0原文

我有 MenuStrip 和一些静态项目。我正在以编程方式向此 MenuStrip 添加项目。其中一些项目具有子项目 (DropDownItems)。

在某些时候,我想删除所有添加的项目以使用不同的项目重新创建菜单。怎样做才正确呢?

示例情况:

mainMenu
 -staticItem1
 -added1
  -added1_sub1
  -added1_sub2
 -added2
  -added2_sub1

我可以这样做:

added1.Dispose();
mainMenu.Items.Remove(added2);

这两种方法都有效,但我不确定它是否安全。也许我应该一一递归地删除和处理所有项目和子项目?

I have MenuStrip with some static items. To this MenuStrip I am adding items programmatically. Some of these items has child items (DropDownItems).

At some point I would like to remove all added items to recreate menu with different items. How to do it right?

Example situation:

mainMenu
 -staticItem1
 -added1
  -added1_sub1
  -added1_sub2
 -added2
  -added2_sub1

I could do:

added1.Dispose();
mainMenu.Items.Remove(added2);

Both of this works, but I am not sure if it's safe. Maybe I should remove and dispose all items and subitems one by one recursively?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后知后觉 2024-10-06 22:33:21
  • 仅使用 Remove 方法就足够了
  • 您不需要递归,当您删除父级时,其所有子级都将被删除
  • 使用 Items.Clear() 删除所有子级对于菜单和
    DropDownItems.Clear() 用于删除项目的所有子项。
  • Use Remove method only, it's enough
  • You don't need recursive, When you remove a parent all its children will be removed
  • Use Items.Clear() to remove all the children for the Menu and
    DropDownItems.Clear() to remove all the children for an item.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文