数据录入控件






4.86/5 (22投票s)
一行代码实现基于快速反射的数据录入控件

引言
这是另一个出于必要性而生的代码,我在网上没有找到解决方案(好吧,不完全是,因为我确实找到了,但我还是想自己做)。简单来说,这是一种简化数据录入表单的 UI 设计方面的方法,并将所有繁琐的工作委托给控件,即数据录入控件显示此对象。
它的功能
该控件会获取您在 DataSource
属性中提供的任何内容,并显示适合底层数据类型的数据录入控件。
一些巧妙的功能如下
- 该控件识别数据类型并显示相应的编辑控件,例如
TextBox
、ComboBox
、CheckBox
和DatePicker
。 - 在该控件的数据录入部分下方是一个显示属性描述的区域。
- 如果您在数据实体上使用了
Description
、DisplayName
和Browsable
属性,则该控件将使用它们。 - 如果您设置了
RightToLeft
属性,则该控件将正确显示和对齐。 - 鼠标悬停会更改子控件的背景。
- 该控件将自动从底层枚举属性填充组合框。

要求和使用方法
要使用此控件,您只需创建要编辑的对象,并将其提供给控件的 DataSource
属性,一切都会神奇地发生。
Customer customer = new Customer();
private void Form2_Load(object sender, EventArgs e)
{
dataEntry1.DataSource = customer;
}
如果您想使用该控件的全部功能,请尝试 Description
、DisplayName
和 Browsable
属性,如下所示
[Description("Please enter the Customer Name here")]
[DisplayName("customer name")]
public string Name { get; set; }
[Browsable(false)]
public decimal number { get; set;}
替代方案
但是你说还有其他替代方案……是的,下面有一些
替代方案 1:Visual Studio 设计器

可能最容易访问的解决方案是使用数据源工具箱,并绑定到相关对象,然后将字段拖到您的窗体上,如上图所示,并让 Visual Studio 直接在您的窗体上创建控件。然后您可以根据自己的喜好调整控件。
问题
- 生成大量代码样板,从而膨胀您的应用程序。
- 您可能会浪费大量时间来调整表单。
- 更改您的数据源,您必须再次经历所有这些。
- 无法帮助您处理枚举,您必须自己处理。
替代方案 2:PropertyGrid 控件

这是一个非常好的控件,并且可能是工具箱中最被低估的控件,它可以处理各种数据类型,正如您在使用 Visual Studio 时所看到的那样。它非常好,您可以用一行代码启动并运行它。
private void Form1_Load(object sender, EventArgs e)
{
propertyGrid1.SelectedObject = new Customer();
}
问题
- 当您想要在属性之间移动时,Tab 键不起作用。
- 属性被捆绑在一起,您无法控制间距。
替代方案 3:商业产品
有一些商业产品可以执行与此处显示的类似操作。您必须四处搜索才能找到它们,因为我不允许在此处说。问题
- 您必须付费。
关注点
您可以通过在 switch
语句中插入相应的代码,非常容易地扩展控件以显示您自己的数据类型。此外,为了改变查看外观,您可以根据自己的喜好更改 PropertyItemControl
。它基本上是下图。

上述控件上还有一个 Validation
标签,您可以使用它来显示必需或无效的提示。
历史
- 首次发布:2011 年 1 月 23 日