winform 数据绑定_winform如何连接数据库

(1) 2024-09-21 15:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
winform 数据绑定_winform如何连接数据库,希望能够帮助你!!!。

在WinForm中,有很多添加和修改数据的场景,一般的做法是当点击“添加”按钮时,收集各控件的值,然后赋值给实体类的各个属性,然后再完成保存工作。在修改时,首先把实体的原值,一个个赋值给控件,修改保存时,再反过来把值赋给实体,最后持久化保存。

除了这种做法,用绑定也是可以完成数据的分发和收集,绑定可以把实体的原值赋给控件,修改完控件后,实体的属性值也一起变化了,最后持久化提交实体就可以了。

举个例子:下面是一些实体类。

record Person { public string Name { get; set; } public Sex Sex { get; set; } public DateTime Birthday { get; set; } public Tel Tel { get; set; } public bool IsResult { get; set; } public bool IsTest { get; set; } public List<Goods> Goodses { get; set; } public string GoodsString { get { var s = ""; foreach (var goods in Goodses) { s += goods; } return s; } } } enum Sex { 男, 女 } record Goods { public int ID { get; set; } public string Name { get; set; } public double Quantity { get; set; } public decimal Price { get; set; } }

有实体类后,模拟加载数据:

Person person = new Person { Name = "桂素伟", Sex = Sex.女, Tel = new Tel { Name = "手机", No = "" }, Birthday = DateTime.Parse("1979-06-22"), Goodses = new List<Goods> { new Goods{ID=1, Name="商品A", Price=1.1m,Quantity=10}, new Goods{ID=2, Name="商品B", Price=2.1m,Quantity=20}, } };

接下来就是绑定了,不同数据类型的属性,绑定的控件不一样,这里更举了几种(为了了解是什么控件,控件名称没有作更改):

private void Form1_Load(object sender, EventArgs e) { //TextBox绑定最简单 textBox1.DataBindings.Add(new Binding("Text", person, "Name")); //DateTimePicker绑定与TextBox类型,时间类型属性绑定 dateTimePicker1.DataBindings.Add(new Binding("Text", person, "Birthday")); //先把集合绑定到ComboBox,再绑定,绑定时要用控件的SelectedItem属性 comboBox1.DataSource = Enum.GetValues(typeof(Sex)); comboBox1.DataBindings.Add(new Binding("SelectedItem", person, "Sex")); //这是最常用的绑定 dataGridView1.DataSource = person.Goodses; //CheckBox绑定bool类昔 checkBox1.DataBindings.Add(new Binding("Checked", person, "IsTest")); //如查外部集合,赋值DataSource,再绑定 listBox1.DataSource = new List<Tel> { new Tel{Name="手机",No="" }, new Tel{Name="电话",No="" }, }; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "No"; listBox1.DataBindings.Add(new Binding("SelectedItem", person, "Tel")); //对于实体属性,拆分成RadioButton两个控件,需特殊处理 radioButton1.DataBindings.Add(new Binding("Checked", person, "IsResult")); var b = new Binding("Checked", person, "IsResult"); b.Format += B_Format; b.Parse += B_Parse; radioButton2.DataBindings.Add(b); }

当然这不是合部,具体和用的控件有很大关系,不过当把大部分控件都撸过一次后,都可以抽象成一个自用的库,更简单,更快捷使用。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复