C# 如何实现VisualStudio样式的添加或删除按钮toolstrip

C# 如何实现VisualStudio样式的添加或删除按钮toolstrip,c#,winforms,toolstrip,C#,Winforms,Toolstrip,我想实现VisualStudio风格的添加或删除Ruttons toolstrip,如下所示 在我的winforms应用程序中,如何实现这一点 我没有在这方面尝试过任何东西,因为我不知道如何开始,而且我在winforms方面没有太多的工作经验 请建议。乍一看,这并不难 只需将ToolStripDropDownButton添加到您的ToolStrip中,无需图像或文本。这将使外观看起来或多或少相似 在此下拉按钮中添加一个带有“添加或删除按钮”标题的ToolStripMenuItem。我们将其称为

我想实现VisualStudio风格的添加或删除Ruttons toolstrip,如下所示

在我的winforms应用程序中,如何实现这一点

我没有在这方面尝试过任何东西,因为我不知道如何开始,而且我在winforms方面没有太多的工作经验


请建议。

乍一看,这并不难

只需将
ToolStripDropDownButton
添加到您的
ToolStrip
中,无需图像或文本。这将使外观看起来或多或少相似

在此下拉按钮中添加一个带有“添加或删除按钮”标题的
ToolStripMenuItem
。我们将其称为
AddRemoveMenuItem

现在,使用代表所有可配置的
ToolStripItem
s的菜单项填充
AddRemoveMenuItem
的子菜单项。您可以通过菜单项的
标记
属性链接菜单项和可配置的工具条项(您也可以子类化
ToolStripMenuItem
添加
ToolStripItem LinkedToolStripItem{get;set;}
属性,但我认为这并不值得)

所有这些“链接”菜单项都必须处理其
单击事件,在这些事件中,它们将切换链接工具条项的
可见属性,并相应地同步其
选中状态

我会这样做:

 linkedMenuItem.Click += (sender, e) => linkedMenuItem.Checked = !linkedMenuItem.Checked;
 linkedMenuItem.CheckedChanged +=
     (sender, e) =>
     {
         var linkedToolStripItem = linkedMenuItem.Tag as ToolStripItem;

         if (linkedToolStripItem != null)
         {
             linkedToolStripItem.Visible = linkedMenuItem.Checked;
         }
     };

启动应用程序时,根据应用程序的默认设置、用户设置等设置相应的链接菜单项
Checked
state,您就完成了。

有一些插件,如?它有很多预定义的东西(实际上非常有用):)或@jbutler483这很容易实现,而不需要使用第三方软件。@在这两者之间,我考虑的更多的是样式而不是实现