如何设计可重用的上下文菜单?

时间:2016-03-29 20:14:15

标签: c# .net winforms visual-studio windows-forms-designer

我正在开发一个WinForms .NET应用程序。我有很少的上下文菜单,用于各种地方,包括一些用户控件。没有最终的根形式可以将这些菜单(我可以在那些形式的设计师中设计)放在一个地方。

我想将这些菜单设置为独立控件,并且可以将它们从Toolbox中删除,无论我需要什么。我知道如何以编程方式/动态进行,但没有设计师支持。也许我只是错过了一些东西。

  • 有没有办法让这些菜单设计好?
  • 最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

您可以创建可在工具箱中使用的可重复使用的自定义上下文菜单。为此,只需在项目中创建一个继承自System.Windows.Forms.ContextMenuStrip的公共类,并将代码放在类的构造函数中。

你也可以使用设计师:

  • 向您的项目添加新课程CustomContextMenuStrip
  • 将其公开并从System.Windows.Forms.ContextMenuStrip继承并保存。
  • 双击文件以在设计模式下打开它,该模式显示一个空白区域,并显示一条消息,告知您可以添加一些组件。
  • 在属性窗口中,单击Items属性并添加所需的项目。
  • 它将为InitializeComponent()方法中的项目创建代码。转到文件的代码视图并添加一个公共无参数构造函数并在其中调用InitializeComponent()
  • 如果您构建项目,您的自定义组件将添加到工具箱顶部的项目“组件”选项卡中的工具箱。

注意:

  • 使用设计器方法具有使用设计器的好处,例如使用设计器,您可以通过设置仅在设计器中可用的Language属性来使组件可本地化。这样,您的组件本身就可以本地化,独立于主机表单。
  • 您可以对所有可继承的组件和控件使用此方法,并且不限于ContextMenuStrip
  • 您可以通过在自定义类中添加事件处理程序来向菜单项添加行为。此外,如果您需要让托管组件的表单添加事件处理程序,您可以在表单中使用ItemClicked
  • 虽然您可以在主机表单的设计器中看到这些项目,但您无法使用主机表单的设计者更改它们。