首页 > 其他分享 >WinForm(十六)绑定

WinForm(十六)绑定

时间:2023-02-08 20:11:53浏览次数:42  
标签:控件 set get 绑定 十六 new public 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 = "13333333333" },
    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="13333333333" },
        new Tel{Name="电话",No="88888888" },
    };
    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);
}

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

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

 

标签:控件,set,get,绑定,十六,new,public,WinForm
From: https://www.cnblogs.com/ljknlb/p/17103141.html

相关文章

  • Vue动态绑定内联样式( v-bind:style )
    <button@click="change"type="button">改变Box大小data(){return{imgStyle:{}}},computed:{imgStyle(){retur......
  • 高效XML绑定框架JIBX
    高效XML绑定框架JIBXdemo源码地址https://gitee.com/clover-clover/clover.git具体路径:clover/clover-frame/clover-frame-netty/src/main/java/com/clover/frame/nett......
  • C# Winform MessageBox使用方法及案例
    我们在程序中经常会用到MessageBox。  MessageBox.Show()共有21中重载方法。现将其常见用法总结如下:   1.MessageBox.Show("Hello~~~~");最简单的,只显示提示信息......
  • C#,Winform软件防破译-源代码加密简单方法之.NET REACTOR(一)
     一、.NETReactor介绍 .NETReactor是一个功能强大的代码保护和软件许可系统,适用于为.NETFramework编写的软件,并支持生成.NET程序集的所有语言。支持Blazor保护,支......
  • Qt使用图片旋转绘制圆环,圆弧类UI界面(方法可适用于winform和WPF等其余UI绘制)
    先上效果图:  这个主要是一个试剂杯盘的循环图,相信大家伙一定都想到了使用GDI和三角函数来进行计算,但如果没有实际尝试,可能会踩一些坑,留此文帮助大家方便快捷的绘制出类......
  • 实现一个wpf,winform下通用的Messenger类
    1引言WeakReference的说明:程序在引用同时又可以被GC会受到就叫弱引用。常规的引用是强引用,GC不会回收对象。 使用:假设一个类,名称为Data。//短弱引用,常用varwref......
  • [你必须知道的.NET]第十六回:深入浅出关键字---using全接触
    [你必须知道的.NET]第十六回:深入浅出关键字---using全接触 本文将介绍以下内容:using指令的多种用法using语句在Dispose模式中的应用  1. 引言在.NET大家庭......
  • VS2019和unity绑定设置
    第一步:打开本机VisualStudioInstaller 第二步:点击修改  第三步:下载对应组件  第四步:修改Unity脚本编辑工具绑定 点击edit -> preferences -> ......
  • v-model 创建双向绑定
    在表单 <input>、<textarea> 及<select>元素控件或者组件上创建双向绑定,它负责监听用户的输入事件以更新数据1.普通文本框<div id="app"><p>{{msg}}</p><inp......
  • WinForm(十一)用户控件
    winform+api是一种对接数据模式,在本例中,为了方便,开发两个天生具有与后台api对接的用例控件,并且把他们封闭成单独控件,以供多次使用。提示:此实例不是生产使用,仅作演示......