动态创建控件或以侧面形式创建控件? C#winforms

时间:2012-07-20 10:22:03

标签: c# .net winforms

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

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

我想到了两种方法 - 动态创建新面板(及其控件)并将其添加到表单而不是原始面板,或者以其他形式创建新面板以及单击相关按钮时从该表单中取出面板并添加到所需的表单中(通过创建新表单的实例并使其面板的修改器公开)。 “副形式”的目的只是创建该面板,它没有自己的功能。

动态创建新面板的优势:

  • 无需创建零功能表单。

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

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

哪种方式更好?

谢谢!

2 个答案:

答案 0 :(得分:1)

IMO最好的方法是为此目的利用用户控件。只需为每个要显示/隐藏的面板创建一个用户控件,并将控件放在其中。这样你就可以拥有:设计师和你想要的“额外形式”。

答案 1 :(得分:1)

你考虑过TabControl吗?这似乎非常适合您的需求。我能想到的其他控件是StackPanel(可以很容易地为Windows Forms完成)或者像控件一样的OutlookBar(同样是用户控件)。

最简单快捷的方式似乎是TabControl。

编辑:

  1. 我认为SideForm是一种不同的窗口形式。因此,如果您正在考虑将控件公开,然后更改其可见性等,请不要。使用委托来处理MainForm中的SideForm事件。
  2. 如你所说,没有更多控制的余地,我会建议更多的屏幕,而不仅仅是一个。话虽如此,我对您当前的UI设计和功能了解不多,所以这取决于您。
  3. 我会说隐藏控件并且只是玩Visibility就可以了。这意味着您不必担心在运行时定位控件,锚定和停靠。问题很可能是加载表格。拥有大量与之相关的数据的控件可能会减慢速度。