Winforms .NET-正确的UI结构

Winforms .NET-正确的UI结构,winforms,mdi,mdichild,Winforms,Mdi,Mdichild,我正在开发一个具有以下结构的C#应用程序UI: 主窗体(MDI父窗体) 树视图 多个MDI子项,每个子项包含: 自定义用户控件 我想将分配给树状视图的窗体画布空间与允许MDI子对象移入的窗体画布空间分开。在某种程度上,我尝试了SplitContainer,并将MDI子级的顶级字段设置为“false”,但是,除了新创建的MDI子级是在旧MDI子级之后创建的之外,我还遇到了一些问题,即无法从屏幕上正确清除这些子级以及其他奇怪的问题 由于我对C#中的UI没有太多经验,我所走的道路正确吗?更改上

我正在开发一个具有以下结构的C#应用程序UI:

主窗体(MDI父窗体)

  • 树视图
  • 多个MDI子项,每个子项包含:
    • 自定义用户控件
我想将分配给树状视图的窗体画布空间与允许MDI子对象移入的窗体画布空间分开。在某种程度上,我尝试了SplitContainer,并将MDI子级的顶级字段设置为“false”,但是,除了新创建的MDI子级是在旧MDI子级之后创建的之外,我还遇到了一些问题,即无法从屏幕上正确清除这些子级以及其他奇怪的问题

由于我对C#中的UI没有太多经验,我所走的道路正确吗?更改上述结构以使其不再使用MDI会更容易吗,或者除了SplitContainer之外,还有更简单的方法在树视图和MDI之间划分画布吗

干杯, 亚历克斯


更新:事实上,这个解决方案似乎工作得很好,谢谢!我可能会通过放置一个简单的检查来阻止小部件移动到错误的位置


除此之外,是否有任何方法可以使TreeView在不涉及SplitContainer的情况下调整大小(因为文章中提到的原因)?

在主窗体中添加一个面板,并将其停靠在左侧。现在将树状视图添加到面板中。根据需要调整面板的大小。现在您的孩子将占据面板右侧的空白


*实际上,您可以简单地将TreeView本身停靠到表单的左侧,但是面板方法也允许您在左侧区域放置其他控件。这取决于您的UI布局。

出于好奇,为什么要使用MDI?这是一种过时且有缺陷的UI概念。您考虑过使用选项卡式文档吗?MDI是从以前继承的。基本上,我只需要为自定义用户控件提供一个可移动的容器。