65.9K
CodeProject 正在变化。 阅读更多。
Home

数据录入控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.86/5 (22投票s)

2011年1月31日

CPOL

3分钟阅读

viewsIcon

52680

downloadIcon

1871

一行代码实现基于快速反射的数据录入控件

image001.png

引言

这是另一个出于必要性而生的代码,我在网上没有找到解决方案(好吧,不完全是,因为我确实找到了,但我还是想自己做)。简单来说,这是一种简化数据录入表单的 UI 设计方面的方法,并将所有繁琐的工作委托给控件,即数据录入控件显示此对象。

它的功能

该控件会获取您在 DataSource 属性中提供的任何内容,并显示适合底层数据类型的数据录入控件。

一些巧妙的功能如下

  • 该控件识别数据类型并显示相应的编辑控件,例如 TextBoxComboBoxCheckBox DatePicker
  • 在该控件的数据录入部分下方是一个显示属性描述的区域。
  • 如果您在数据实体上使用了 DescriptionDisplayName Browsable 属性,则该控件将使用它们。
  • 如果您设置了 RightToLeft 属性,则该控件将正确显示和对齐。
  • 鼠标悬停会更改子控件的背景。
  • 该控件将自动从底层枚举属性填充组合框。
image002.jpg

要求和使用方法

要使用此控件,您只需创建要编辑的对象,并将其提供给控件的 DataSource 属性,一切都会神奇地发生。

Customer customer = new Customer();
private void Form2_Load(object sender, EventArgs e)
{
     dataEntry1.DataSource = customer;
}  

如果您想使用该控件的全部功能,请尝试 DescriptionDisplayName 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 设计器

image003.jpg

可能最容易访问的解决方案是使用数据源工具箱,并绑定到相关对象,然后将字段拖到您的窗体上,如上图所示,并让 Visual Studio 直接在您的窗体上创建控件。然后您可以根据自己的喜好调整控件。

问题

  • 生成大量代码样板,从而膨胀您的应用程序。
  • 您可能会浪费大量时间来调整表单。
  • 更改您的数据源,您必须再次经历所有这些。
  • 无法帮助您处理枚举,您必须自己处理。

替代方案 2:PropertyGrid 控件

image004.png

这是一个非常好的控件,并且可能是工具箱中最被低估的控件,它可以处理各种数据类型,正如您在使用 Visual Studio 时所看到的那样。它非常好,您可以用一行代码启动并运行它。

private void Form1_Load(object sender, EventArgs e)
{
     propertyGrid1.SelectedObject = new Customer();
}

问题

  • 当您想要在属性之间移动时,Tab 键不起作用。
  • 属性被捆绑在一起,您无法控制间距。

替代方案 3:商业产品

有一些商业产品可以执行与此处显示的类似操作。您必须四处搜索才能找到它们,因为我不允许在此处说。

问题

  • 您必须付费。

关注点

您可以通过在 switch 语句中插入相应的代码,非常容易地扩展控件以显示您自己的数据类型。此外,为了改变查看外观,您可以根据自己的喜好更改 PropertyItemControl 。它基本上是下图。

image007.jpg

上述控件上还有一个 Validation 标签,您可以使用它来显示必需或无效的提示。

历史

  • 首次发布:2011 年 1 月 23 日
© . All rights reserved.