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));
            }
        }
    }
}
相关推荐
奈斯先生Vector3 分钟前
本地图片识别怎么接入多模态 AI?用 Python API 理解 GPT-4o Vision 的真实工作流
开发语言·人工智能·windows·python·网络协议·http·aigc
OPEN-F7 分钟前
C++17新特性精讲:结构化绑定、if constexpr与实用类型
开发语言·c++
OPEN-F10 分钟前
C++并发编程:线程与互斥锁
开发语言·c++
俊昭喜喜里12 分钟前
C#中的decimal
开发语言·c#
catchadmin23 分钟前
免费可商用 PHP 管理后台 CatchAdmin V5.4.0 发布,新增短信服务能力
开发语言·php
小白学大数据33 分钟前
API 调用错误处理实战:分层定位、有纪律地重试与可观测性设计
开发语言·网络·人工智能
萧瑟余晖1 小时前
Java深入解析篇十三之Java日志API(JUL)详解
java·开发语言
luj_17682 小时前
毒素驱动的生物自毁机制探析
服务器·c语言·开发语言·经验分享·算法
海兰2 小时前
【 Python 量化交易】第6章:数据可视化
开发语言·python·信息可视化
多多鼠2 小时前
Tool Calling的信任边界:从协议校验到执行沙箱的完整链路设计
运维·开发语言·网络·人工智能·python·langchain