How to create a tree-view preferences dialog type of interface in C#?我正在编写一个基本上只是一个首选项对话框的应用程序,就像Visual Studio本身使用的树视图首选项对话框一样。该应用程序的功能只是将数据从串行设备传递到文件。在将数据写入文件之前,它会对数据执行许多转换,因此应用程序的GUI只是指示这些转换应该是什么的所有设置。 设计/编码树视图首选项对话框的最佳方法是什么?我一直在做的事情是用左侧的停靠树控件构建主窗口。然后,我一直在创建与树的每个节点相对应的容器控件。选择一个节点后,该应用会将该节点的相应容器控件置于最前面,将其移至正确的位置,并在主窗口中将其最大化。在设计时,这似乎确实非常笨拙。基本上,这意味着在设计期间,我在主窗口的边缘之外有大量的容器控件,因此必须不断滚动到主窗口才能使用它们。我不知道这是否完全符合我的写作方式,但也许我正在谈论的视觉效果更有意义:
基本上,我必须使用这种巨大的表单,使用整个地方的容器控件,然后进行大量运行时重新格式化,以使其全部正常工作。这似乎是很多额外的工作。我这样做是完全愚蠢的吗?是否有一些我缺少的"显而易见"的简便方法? 一种比较简单的方法是为每个"窗格"创建单独的表单,并在每个表单构造函数中设置
这样,每种形式都可以在其自己的设计器中进行布局,在运行时实例化一次或多次,然后像正常控件一样添加到空白区域。
也许主窗体可以在一个面板中使用带有静态
格雷格·霍尔曼(Greg Hurlman)写道:
不幸的是,这就是我要避免的事情。我正在寻找一种在设计时处理接口的简便方法,并且需要最少的重新格式化代码以使其在运行时正常工作。 我喜欢Duncan的答案,因为这意味着每个节点的接口设计可以完全分开。这意味着我不会在捕捉准则和其他设计时间优势上有所重叠。 我可能会基于继承CustomControl的基类创建几个面板类。这些控件将具有诸如"保存/加载"之类的方法。如果是这样,我可以分别设计每个面板。 我使用了一个向导控件,该控件在设计模式下处理了多个页面,因此可以单击设计器中的下一个并通过设计器一次设计所有页面。尽管在将代码连接到控件时有很多缺点,但这可能意味着您可以通过构建一些设计器类来进行类似的设置。我从来没有自己在VS中编写过任何设计师类,所以我不能说怎么做或是否值得:-) 我对您打算如何处理控件中的值加载/保存有点好奇?如果您的所有页面都采用一种大格式,则在一个类中必须有很多代码? 当然,还有另一种方法是使用有关设置类型的信息,在请求每个页面时生成gui代码。 |