动态表单控件

时间:2008-09-04 11:39:39

标签: c# .net winforms

使用C#2.0实现动态表单控件的最佳方法是什么?

我需要为每个数据对象提供一组控件,所以我应该手动执行它并将它们放在一边,同时增加最高值还是有更好的方法?

5 个答案:

答案 0 :(得分:8)

您可以使用自动布局的面板,例如FlowLayoutPanelTableLayoutPanel

不幸的是,只有2个面板具有开箱即用的自动布局,但您可以创建自定义布局面板。

我建议你阅读以下文章:

How to: Create a Resizable Windows Form for Data Entry

Walkthrough: Creating a Resizable Windows Form for Data Entry

另一种选择是使用WPF(Windows Presentation Presentation) WPF非常适合您的任务 WPF控件可以托管在WinForms应用程序中,因此您无需完全切换到它。

答案 1 :(得分:2)

@Sam我知道这个问题是关于Windows Forms的,但你一定要开始看WPF。在使用DataTemplates和TemplateSelectors的WPF中,这种情况非常容易

答案 2 :(得分:1)

“动态”是什么意思?针对数据集中每个数据行的一组新的固定控件?然后使用包含控件的UserControl

或者您的意思是,根据您的数据布局,您希望为用户提供一组自定义控件,例如每列一个TextBox

答案 3 :(得分:1)

是的,我发现手动布局控件(按照控件的高度递增他们的Top属性加上我去的边距)才能合理有效。

另一种方法是将控件放置在Panel中,Dock设置为Top,以便每个连续的面板与上面的面板对接。然后,您可以切换单个面板的可见性,下方的控件将捕捉以填充可用空间。请注意,这可能有点不可预测:显示已停靠的隐藏面板有时会相对于其他停靠控件更改其位置。

答案 4 :(得分:1)

那就是我们现在在项目上做的方式。但这只适用于简单的情况。我建议您使用某种模板来处理更复杂的情况。

例如,我使用Reflection将某种类型的控件映射到旧项目中我的域对象上的某个属性。

您可以尝试使用t4从模板生成代码,请参阅T4 Templates in Visual Studio for Code Generation Screencast以获取一个简单示例。您可以将此应用于WinForms。

DevExperience也有一个很好的(昂贵的)框架,请参阅DevExpress eXpressApp Framework™