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));
            }
        }
    }
}
相关推荐
Rhystt3 小时前
代码随想录算法训练营第六十天|多余的边?从基础到进阶!
开发语言·c++·算法·图论
愤豆3 小时前
07-Java语言核心-JVM原理-JVM对象模型详解
java·jvm·c#
gaozhiyong08133 小时前
超越跑分:Gemini 3.1 Pro 2026年多维度能力评估体系深度拆解
java·开发语言
皙然3 小时前
深入解析Java volatile关键字:作用、底层原理与实战避坑
java·开发语言
再玩一会儿看代码3 小时前
Java中 next() 和 nextLine() 有什么区别?一篇文章彻底搞懂
java·开发语言·经验分享·笔记·学习
羊小猪~~3 小时前
【QT】-- QMainWindow简介
开发语言·数据库·c++·后端·qt·前端框架·求职招聘
2301_810160953 小时前
C++中的策略模式进阶
开发语言·c++·算法
ruxingli3 小时前
GoLang的并发如何避免死锁
开发语言·后端·golang
-Rane3 小时前
【C++】map和set
开发语言·c++
张人玉3 小时前
上位机项目笔记
笔记·c#·上位机