1

我有一个充满控件的表单,没有其他控件的空间。在表单的底部,我有一个面板,上面有一些控件。

我的目标是,当单击某个按钮时,底部的原始面板将替换为另一个包含可以在程序启动之前创建的控件的面板,这意味着面板中的这些控件不需要动态创建。将通过将每个面板的可见字段设置为其匹配值来执行替换操作。

我已经想到了两种方法 - 要么动态创建新面板(及其控件)并将其添加到表单而不是原始面板,要么以另一种形式创建新面板,然后单击相关按钮时面板正在取自该表单并添加到所需的表单(通过创建新表单的实例并将其设为面板的修饰符公开)。“侧面表单”的目的只是创建该面板,它没有自己的功能。

动态创建新面板的优点:

  • 无需创建零功能表单。

以侧面形式创建新面板的优点:

  • 哪些控件添加到新面板及其位置非常清楚。
  • 在新面板中设置控件的位置和其他字段非常容易。

哪种方式更好?

谢谢!

4

2 回答 2

1

IMO 最好的方法是为此目的使用用户控件。只需为您希望显示/隐藏的每个面板创建一个用户控件,然后将控件放置在其中。这样,您将同时拥有:设计师和您想要的“额外形式”。

于 2012-07-20T10:31:59.473 回答
1

你考虑过 TabControl 吗?这似乎很适合您的需求。我能想到的其他控件是 StackPanel(对于 Windows 窗体可以相当容易地完成)或类似 OutlookBar 的控件(又是一个用户控件)。

最简单最快的方法似乎是 TabControl。

编辑:

  1. 我想 SideForm 是一种不同的窗口形式。因此,如果您正在考虑将控件公开,然后更改其可见性等,请不要这样做。在 MainForm 中使用委托来处理 SideForm 的事件。
  2. 正如您所提到的,没有更多控件的空间,我建议使用更多屏幕而不仅仅是一个。话虽如此,我对您当前的 UI 设计和功能知之甚少,所以这取决于您。

我会说隐藏控件并仅使用可见性就可以了。这意味着您不必担心运行时控件的定位、锚定和停靠。问题很可能是加载表单。拥有大量与它们相关联的数据的控件可能会减慢速度。

于 2012-07-20T10:34:49.153 回答