WinForm开发-界面控件到实体,实体到界面控件自动绑定

简介:

 在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦。有没有像Web中那样方便的方法直接就自动映射了呢?现在不用如此繁琐,在RDIFramework.NET开发框架的WinForm部分新增了界面控件到实体,实体到界面控件自动绑定,一句话就搞定了,非常的方便。主要是引用“RDIFramework.WinForm.Utilities.dll”dll文件,再调用下面两个方法即可:

  1、实体到界面控件的自动映射:FormBinding.BindObjectToControls(TestEntity, this);

  2、界面控件到实体的自动映射:FormBinding.BindControlsToObject(TestEntity, this);

  效果如下图所示:

 

  下面给出上面的测试界面的全部代码供大家参考:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using  System;
 
namespace  RDIFramework.Test
{
     using  RDIFramework.Utilities;
     using  RDIFramework.WinForm.Utilities;
 
     public  partial  class  FrmFormBindingTest : BaseForm
     {
         ExampleEntity TestEntity =  new  ExampleEntity();
 
         public  FrmFormBindingTest()
         {
             InitializeComponent();
         }
 
         public  override  void  FormOnLoad()
         {
             base .FormOnLoad();
             BindCategory();
             FormBinding.BindObjectToControls(TestEntity,  this );
         }
 
         private  void  BindCategory()
         {
             BasePageLogic.BindCategory( base .UserInfo, ProductCategory,  "ProductCategory" );
             BasePageLogic.BindCategory( base .UserInfo, comboBox1,  "Gender" );
         }
 
         private  void  btnEntityToControl_Click( object  sender, EventArgs e)
         {
             FormBinding.BindObjectToControls(TestEntity,  this );
         }
 
         private  void  btnControlToEntity_Click( object  sender, EventArgs e)
         {
             FormBinding.BindControlsToObject(TestEntity,  this );
             this .richTextBox1.Text = TestEntity.ToString();
         }
 
         private  void  btnClose_Click( object  sender, EventArgs e)
         {
             this .Close();
         }
     }
 
     public  class  ExampleEntity
     {
         public  string  Text1 {  get set ; }
 
         public  string  Text2 {  get set ; }
 
         public  string  comboBox1 {  get set ; }
 
         public  string  ProductCategory {  get set ; }
 
         public  DateTime? DateTime1 {  get set ; }
 
         public  decimal ? MaskText1 {  get set ; }
 
         public  int ? Int1 {  get set ; }
 
         public  int  Enabled1 {  get set ; }
 
         public  ExampleEntity() {
             Text1 =  "ValueText1" ;
             Text2 =  "ValueText2" ;
             DateTime1 = BusinessLogic.ConvertToDateTime(DateTime.Now.AddDays(-2));
             MaskText1 = BusinessLogic.ConvertToNullableDecimal(12345.12);
             Int1 = 124;
             Enabled1 = 1;
             comboBox1 =  "男" ;
             ProductCategory =  "其他" ;
         }
 
         public  override  string  ToString()
         {
             string  returnValue =  "Text1: "  + Text1 +  "\r Text2: "  + Text2;
             returnValue +=  "\r comboBox1:"  + comboBox1 +  "\r Int1:"  + Int1.ToString() +  "\r DateTime1:"  + DateTime1.ToString() ;
             returnValue +=  "\r ProductCategory:"  + ProductCategory +  "\r MaskText1:"  + MaskText1.ToString() +  "\r Enabled1:"  + Enabled1.ToString();
             return  returnValue.ToString();
         }
     }
}

  



本文转自yonghu86博客园博客,原文链接:http://www.cnblogs.com/huyong/p/5522799.html,如需转载请自行联系原作者

相关文章
|
存储 安全 数据管理
Linux文件时间戳:解析时区与修改时间的相互作用
Linux文件时间戳:解析时区与修改时间的相互作用
287 2
|
机器学习/深度学习 存储 监控
「Arm Arch」 初识 Arm(上)
「Arm Arch」 初识 Arm(上)
1194 1
|
Oracle JavaScript Java
JDK的版本迭代特性(JDK9 - JDK20)
JDK的版本迭代特性(JDK9 - JDK20)
|
11月前
|
API 网络安全
发送UDP数据免费API接口教程
此API用于向指定主机发送UDP数据,支持POST或GET请求。需提供用户ID、密钥、接收IP及端口、数据内容等参数。返回状态码和信息提示。示例中含公共ID与KEY,建议使用个人凭证以提高调用频率。
206 13
|
10月前
|
数据可视化 项目管理 调度
工作效率低下怎么办?这些方法帮你提升!
本文探讨了现代企业中普遍存在的工作效率低下问题,分析了信息不透明、沟通不畅、任务分配混乱等关键原因,并提出通过提升信息透明度、优化沟通方式、科学分配任务、建立实时进度追踪机制及合理分配资源等方法来解决。特别介绍了板栗看板作为高效项目管理工具的应用,强调其在提升团队协作和执行效率方面的作用。
|
人工智能 自然语言处理
详解:天宫ai官方网站_天宫官网ai入口是什么
天宫AI,正如其名,是昆仑万维精心打造的一款大型语言模型,目标直指 OpenAI 的 ChatGPT,立志成为中文 AI 领域的佼佼者! 其官网 tiangong.cn 已经敞开大门,迎接探索者们。
|
人工智能 监控 Cloud Native
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
本实验介绍如何使用阿里云的云原生应用开发平台CAP、函数计算FC和日志服务SLS,三步创建AI实时绘画平台。
【涂鸦即艺术】基于云应用开发平台 CAP 部署 AI 实时生图绘板
|
机器学习/深度学习 人工智能 自然语言处理
|
边缘计算 自动驾驶 物联网
5G 如何实现大规模天线阵列:赋予无线通信全新力量
5G 如何实现大规模天线阵列:赋予无线通信全新力量
775 0
|
存储 安全 物联网
裸金属服务器适合哪些场景使用,有哪些优势
裸金属架构虚拟系统无需安装操作系统或虚拟化软件,而是通过虚拟化技术直接将硬件资源分配给应用,这种架构消除了传统虚拟化技术中的操作系统层,使虚拟机能够直接访问物理硬件资源,实现了更高的性能和更低的延迟,从而提供接近物理机的性能和效率。