设为首页 加入收藏

TOP

WinForm DataGridView双向数据绑定(一)
2019-08-30 00:47:10 】 浏览:89
Tags:WinForm DataGridView 双向 数据 绑定

程序目标:

  实现DataGridView与BindingList<T>双向绑定。用户通过DataGridView修改值后立即更新BindList对象的值,代码修改BindList后立即更新DataGridView的显示。

实现环境:vs2017 C# WinForm

程序完整代码包:https://pan.baidu.com/s/1LLUxL1UyqNWkXkPF_LuEig

主要代码:

  1 ///****************************************************************************
  2 /// CLR版本     :4.0.30319.42000
  3 /// 邮    箱    :282780854@qq.com
  4 /// 博    客    :https://www.cnblogs.com/it89/
  5 /// 创 建 者    :龙腾虎跃
  6 /// 创建日期    :2019/1/15 21:02:04 
  7 /// 功能描述    :
  8 /// 使用说明    :
  9 ///****************************************************************************
 10 using System;
 11 using System.ComponentModel;
 12 using System.Windows.Forms;
 13 
 14 namespace TestDataGridViewBind
 15 {
 16     public partial class Form1 : Form
 17     {
 18         private DataGridView mDataGridView;
 19         //private BindingSource mBindingSource; //绑定方式一需要的。
 20         private Button mAddItemBtn;
 21         private Button mChangeItemValueBtn;
 22         private Button mDeleteItemBtn;
 23 
 24         public BindingList<People> Peoples { get; set; }
 25 
 26         public Form1()
 27         {
 28             this.Load += this.Form1_Load;
 29             InitializeComponent();
 30         }
 31         public void Form1_Load(object sender, EventArgs e)
 32         {
 33             //初始化mDataGridView对象
 34             mDataGridView = new DataGridView();
 35             mDataGridView.AutoSize = true;
 36             mDataGridView.Left = 10;
 37             mDataGridView.Top = 40;
 38 
 39             //初始化mAddItemBtn按钮。
 40             this.mAddItemBtn = new Button();
 41             mAddItemBtn.Text = "Add People";
 42             mAddItemBtn.AutoSize = true;
 43             mAddItemBtn.Left = 30;
 44             mAddItemBtn.Top = 10;
 45             mAddItemBtn.Click += this.mAddItemBtn_Click;
 46 
 47             //初始化mDeleteItemBtn按钮
 48             mDeleteItemBtn = new Button();
 49             mDeleteItemBtn.Text = "Delete Item";
 50             mDeleteItemBtn.AutoSize = true;
 51             mDeleteItemBtn.Left = 120;
 52             mDeleteItemBtn.Top = 10;
 53             mDeleteItemBtn.Click += mDeleteItemBtn_Click;
 54 
 55             //初始化mChangeItemValueBtn按钮。
 56             mChangeItemValueBtn = new Button();
 57             mChangeItemValueBtn.Text = "Change Item Value";
 58             mChangeItemValueBtn.AutoSize = true;
 59             mChangeItemValueBtn.Left = 220;
 60             mChangeItemValueBtn.Top = 10;
 61             mChangeItemValueBtn.Click += this.mChangeItemValueBtn_Click;
 62 
 63             //初始化Form1。
 64             this.Controls.Add(mDataGridView);
 65             this.Controls.Add(mAddItemBtn);
 66             this.Controls.Add(mDeleteItemBtn);
 67             this.Controls.Add(mChangeItemValueBtn);
 68             this.AutoSize = true;
 69             this.Text = "DataGridView object binding demo";
 70 
 71             //初始化Peoples对象。
 72             Peoples = new BindingList<People>();
 73             Peoples.Add(new People("张三", "北京", 25));
 74             Peoples.Add(new People("李四", "上海", 28));
 75             Peoples.Add(new People("王五", "深圳", 30));
 76 
 77             //绑定方式一:通过BindingSource对象把Peoples绑定到mDataGridView控件。
 78             //mBindingSource = new BindingSource();
 79             //mBindingSource.DataSource = Peoples;
 80             //mDataGridView.DataSource = mBindingSource;
 81 
 82             //绑定方式二:直接通过mDataGridView.DataBindings绑定Peoples。Peoples不能引发改变通知事件,但是People类型继承了INotifyPropertyChanged接口,可以引发改变通知事件。
 83             mDataGridView.DataBindings.Add("DataSource", this, "Peoples", false, DataSourceUpdateMode.OnPropertyChanged);
 84         }
 85 
 86         private void mAddItemBtn_Click(object sender, EventArgs e)
 87         {
 88             this.Peoples.Add(new Peo
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Win10系统修改主机名、用户名称和.. 下一篇Windows To Go入坑记录

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目