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));
            }
        }
    }
}
相关推荐
葡萄城技术团队11 小时前
基于 C# 和 .NET 的 Spread.NET 数据处理实战
c#
粟悟饭&龟波功12 小时前
Java—— ArrayList 和 LinkedList 详解
java·开发语言
冷雨夜中漫步12 小时前
Java中如何使用lambda表达式分类groupby
java·开发语言·windows·llama
a45763687613 小时前
Objective-c Block 面试题
开发语言·macos·objective-c
Cai junhao13 小时前
【Qt】Qt控件
开发语言·c++·笔记·qt
uyeonashi13 小时前
【QT系统相关】QT网络
开发语言·网络·c++·qt
程序猿小D14 小时前
第27节 Node.js Buffer
linux·开发语言·vscode·node.js·c#·编辑器·vim
王子文-上海14 小时前
大数据实时风控引擎:Spark Streaming、Kafka、Flink与Doris的融合实践
c#·linq
武昌库里写JAVA14 小时前
【微服务】134:SpringCloud
java·开发语言·spring boot·学习·课程设计
yaoxin52112314 小时前
105. Java 继承 - 静态方法的隐藏
java·开发语言·jvm