C# 主菜单。最佳做法。

C# 主菜单。最佳做法。,c#,winforms,menu,design-patterns,C#,Winforms,Menu,Design Patterns,我使用Windows窗体,但我对这个库不太熟悉。我需要创建主菜单。我现在: 我创建Windows窗体。在它上面我创建了两个面板:pnlMainMenu(dock=top)和pnlWindow(dock=fill)。我将使用pnlMainMenu作为菜单,pnlWindow用于绘制一些图形 在pnlTools上,我创建菜单:System.Windows.Forms.MenuStrip主菜单(dock=top)和面板pnlTools(dock=fill)。我将为不同的仪器使用pnlTools 这样,

我使用Windows窗体,但我对这个库不太熟悉。我需要创建主菜单。我现在:

我创建Windows窗体。在它上面我创建了两个面板:pnlMainMenu(dock=top)和pnlWindow(dock=fill)。我将使用pnlMainMenu作为菜单,pnlWindow用于绘制一些图形

在pnlTools上,我创建菜单:System.Windows.Forms.MenuStrip主菜单(dock=top)和面板pnlTools(dock=fill)。我将为不同的仪器使用pnlTools

这样,我的表单上就有了很多控件。我是否只需要为主菜单创建新的WindowsForm?例如:

menuForm = new MainMenuForm();
menuForm.pnlMainMenu.Parent = this.pnlMainMenu;
menuForm.pnlMainMenu.Dock = DockStyle.Fill;    

您为菜单创建了不同的表单,只是为了在运行时将菜单移回主应用程序表单?这毫无意义。请解释一下。这个菜单可以用在其他形式。此外,使用主窗体(例如,它将减少控件的数量)会更容易。您可以编写一个帮助器方法来创建菜单。您可以复制设计器生成的代码。如果我使用FrameworkQT,我会这样做。但是我使用Windows窗体。它不具备MVC模式等优点。所以,我认为,最好的方法是为菜单创建新的表单。仍然不确定我是否理解您的问题,但您不想最小化控制量是我读到的。您是否尝试过将其包装在自定义UserControl中。在这里,您还可以提供在不同窗体上重用同一控件的方法+您只需要绑定一个控件而不是多个控件(Panel+Menustrip)。另一个好处是,您可以将菜单逻辑与表单分离,这是迈向“MVC mini”的一小步: