我正在编写一个基本上只是一个首选项对话框的应用程序,就像Visual Studio本身使用的树 View 首选项对话框一样。该应用程序的功能只是将数据从串行设备传递到文件。在将数据写入文件之前,它会对数据执行许多转换,因此应用程序的GUI只是指示这些转换应该是什么的所有设置。
设计/编码树 View 首选项对话框的最佳方法是什么?我一直在处理的方法是使用左侧的停靠树控件构建主窗口。然后,我一直在创建与树的每个节点相对应的容器控件。选择一个节点后,该应用会将该节点的相应容器控件置于最前面,将其移至正确的位置,并在主窗口中将其最大化。在设计时,这似乎确实非常笨拙。基本上,这意味着在设计期间,我在主窗口的边缘之外有大量的容器控件,因此必须不断滚动主窗 Eloquent 能使用它们。我不知道这是否完全符合我的写作方式,但是也许我正在谈论的视觉效果更有意义:
基本上,我必须使用这种巨大的表单,并在各处使用容器控件,然后进行大量运行时重新格式化以使其全部正常工作。这似乎是很多额外的工作。我这样做是完全愚蠢的吗?是否有一些我缺少的“显而易见”的简便方法?
最佳答案
一种比较简单的方法是为每个“ Pane ”创建单独的表单,并在每个表单构造函数中设置
this.TopLevel = false;
this.FormBorderStyle = FormBorderStyle.None;
this.Dock = DockStyle.Fill;
这样,每种形式都可以在其自己的设计器中进行布局,在运行时实例化一次或多次,然后像常规控件一样添加到空白区域。
也许主要形式可以在一个面板中使用带有静态
SplitContainer
的TreeView
,而在另一面板中使用空间添加这些形式。添加它们后,可以使用Hide/Show
或BringToFront/SendToBack
方法翻阅它们。SeparateForm f = new SeparateForm();
MainFormSplitContainer.Panel2.Controls.Add(f);
f.Show();