C# winform控件和对象双向数据绑定

实现目的:

控件和对象双向数据绑定

实现结果:

  1. 对象值 -> 控件值

  2. 控件值 -> 对象值

复制代码
using System;
using System.Windows.Forms;

namespace ControlDataBind
{
    public partial class MainForm : Form
    {
        People people = new People();

        public MainForm()
        {
            InitializeComponent();
        }

        private void btnBind_Click(object sender, EventArgs e)
        {
            people.Name = "对象";
            people.Age = 3;
            txtName.DataBindings.Add("Text", people, "Name");
            txtAge.DataBindings.Add("Text", people, "Age");
        }

        private void btnGetData_Click(object sender, EventArgs e)
        {
            MessageBox.Show($"对象信息,Name={people.Name},Age={people.Age}");
        }

        private void btnSetData_Click(object sender, EventArgs e)
        {
            people.Name = "111";
        }
    }
}
复制代码
using System.ComponentModel;

namespace ControlDataBind
{
    public class People : INotifyPropertyChanged
    {
        string _name;
        int _age;

        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                OnPropertyChanged(nameof(Name));
            }
        }

        public int Age
        {
            get { return _age; }
            set
            {
                _age = value;
                OnPropertyChanged(nameof(Age));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName)  //属性变更通知
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}
相关推荐
lingchen190630 分钟前
MATLAB图形绘制基础(一)二维图形
开发语言·算法·matlab
朝新_41 分钟前
【EE初阶】JVM
java·开发语言·网络·jvm·笔记·算法·javaee
Reggie_L1 小时前
RabbitMQ -- 保障消息可靠性
开发语言·后端·ruby
何中应1 小时前
如何截取PDF内容为图片
java·开发语言·后端·pdf
赵庆明老师2 小时前
C# 结合Redis Cache 访问MySQL数据库
数据库·redis·c#
边洛洛2 小时前
next.js项目部署流程
开发语言·前端·javascript
爱幻想-hjyp2 小时前
【Python】uv包管理器常用命令
开发语言·python·uv
哈皮Superman2 小时前
【Research】MagicFuzzer: Scalable deadlock detection for large-scale applications
java·开发语言·数据库
lly2024062 小时前
NoSQL 简介
开发语言
千里马-horse2 小时前
Boost.Iostreams 简介
开发语言·c++·boost