Winforms 选择菜单项时,在窗口中显示内容的UI设计模式是什么?

Winforms 选择菜单项时,在窗口中显示内容的UI设计模式是什么?,winforms,Winforms,我不熟悉Windows窗体。我有一张表格里的菜单。当用户选择菜单选项时,我希望显示一些元素,如网格、树状视图或分组的UI元素 显示所选选项视图的UI设计模式是什么?是否在窗格中动态加载用户控件?是否显示窗体并隐藏以前的窗体?我没有使用选项卡控件。内容显示在窗体的窗格中。这不是一个单独的窗口 我到处寻找示例应用程序,但找不到任何有菜单的应用程序。有什么想法吗?在designer中根据需要构建表单,然后隐藏和显示听起来是一种合理的方法 我肯定会避免动态内容加载。在WinForms中,您最有可能依赖事

我不熟悉Windows窗体。我有一张表格里的菜单。当用户选择菜单选项时,我希望显示一些元素,如网格、树状视图或分组的UI元素

显示所选选项视图的UI设计模式是什么?是否在窗格中动态加载用户控件?是否显示窗体并隐藏以前的窗体?我没有使用选项卡控件。内容显示在窗体的窗格中。这不是一个单独的窗口


我到处寻找示例应用程序,但找不到任何有菜单的应用程序。有什么想法吗?

在designer中根据需要构建表单,然后隐藏和显示听起来是一种合理的方法

我肯定会避免动态内容加载。在WinForms中,您最有可能依赖事件来处理UI交互。如果动态加载/卸载控件,则必须注意挂起/取消挂起事件处理程序。当您有3个控件,每个控件有一个事件时,很容易跟踪它。但是如果您有更多的控件,并且每个控件都必须处理许多事件,那么加载/卸载和挂接/取消挂接事件将很容易出错。此外,取消挂钩的事件处理程序将导致内存泄漏。另一个问题是,复杂控件将具有许多属性。所有这些都必须在代码中设置。最后会有几十行列出控件的属性并为其赋值


隐藏/显示不会使您暴露于这些问题。在设计器中设计布局一次。因此,您的主代码不会与纯UI构造发生冲突。此外,在显示控件时不创建控件的新实例,因此可以在设计时为事件订阅事件处理程序,并且不必担心隐藏时取消处理程序的挂钩。您创建一个控件实例,并在整个应用程序生命周期中依赖该实例。

为什么您认为需要事件挂接和取消挂接?你钩住了一个事件,比如clicked,它每次都做同样的事情,并且保持钩住状态。@Tony_Henrich我只是说,如果你决定动态创建一个控件,就会钩住/取消钩住。我认为你关于动态创作的想法是,当你需要一个组合框时,你就把它装箱。然后,当您需要数据网格时,删除组合框并在其位置创建数据网格。如果您再次需要一个组合框,您可以创建一个新实例,以此类推。当然可以创建它并在创建后隐藏/显示,但既然需要隐藏/显示的逻辑,为什么不在设计时创建它呢。但是,如果您创建新实例而不取消挂钩,则旧实例将不会被垃圾收集。