如何在C#中创建树视图首选项对话框类型的界面?

Dyl*_*ett 16 c# user-interface

我正在编写一个基本上只是一个首选项对话框的应用程序,就像Visual Studio本身使用的树视图首选项对话框一样.应用程序的功能只是从串行设备到文件的数据传递.它在将数据写入文件之前对数据执行许多转换,因此应用程序的GUI只是决定这些转换应该是什么的所有设置.

设计/编码树视图首选项对话框的最佳方法是什么?我一直在做的方法是在左侧建立一个带有停靠树控件的主窗口.然后我一直在创建对应于树的每个节点的容器控件.选择节点后,应用程序会将该节点的相应容器控件带到前面,将其移动到正确的位置,并在主窗口中将其最大化.在设计它时,这似乎非常非常笨重.它基本上意味着我在设计时间之外有超过主窗口边缘的大量容器控件,我必须继续滚动主窗口以便使用它们.我不知道这是否完全有道理我写这个,但也许这个视觉我正在谈论的将更有意义:

形式设计

基本上我必须使用这个庞大的表单,在整个地方使用容器控件,然后进行一系列运行时重新格式化以使其全部工作.这似乎是很多额外的工作.我是以完全愚蠢的方式做这件事的吗?是否有一些"明显的"更简单的方法来做到这一点,我错过了?

xyz*_*xyz 11

更简洁的方法是为每个"窗格"创建单独的表单,并在每个表单构造函数中设置

this.TopLevel = false;
this.FormBorderStyle = FormBorderStyle.None;
this.Dock = DockStyle.Fill;
Run Code Online (Sandbox Code Playgroud)

这样,这些表单中的每一个都可以在自己的设计器中布局,在运行时实例化一次或多次,并像普通控件一样添加到空白区域.

也许主窗体可以在一个面板中使用SplitContainer静态,TreeView在另一个面板中使用空间来添加这些窗体.一旦添加它们,就可以通过使用Hide/ShowBringToFront/SendToBack方法来翻转它们.

SeparateForm f = new SeparateForm(); 
MainFormSplitContainer.Panel2.Controls.Add(f); 
f.Show();
Run Code Online (Sandbox Code Playgroud)