数据绑定允许将控件的属性和数据链接起来——控件属性值发生改变,会导致数据跟着自动改变。

        数据绑定还可以是双向的——控件属性值发生改变,会导致数据跟着自动改变;数据发生改变,也会导致控件属性值跟着自动改变。

1、数据绑定的三个关键点

实现数据绑定的三个关键步骤

  • ①创建绑定数据
  • ②控件绑定数据(重点是:数据绑定的语法)
  • ③数据更新的通知方法(重点是:属性更改通知事件的实现)

 数据绑定的语法

Control.DataBindings.Add(“控件的属性名”,数据源,”数据源的属性名”);

下面通过一个例子——通过按键控制三个控件状态,来演示具体如何进行数据绑定。

2、实现效果

3、整体的文件结构

4、Data.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace videoFromBili_474458694
{
	internal class Data : INotifyPropertyChanged
	{
		private bool valveState;
		public bool ValveState
		{
			get { return valveState; }
			set
			{
				valveState = value;
				ValveText = valveState ? "水泵已开启" : "水泵已关闭";
				ValveColor = valveState ? Color.Green :Color.Red;
				OnPropertyChanged(nameof(ValveState));//“数据发生改变,控件属性跟着变”的关键
			}
		}
		public string ValveText { get; set; }
		public Color ValveColor { get; set; }
		
		//③数据更新的通知方法(重点是:属性更改通知事件的实现)
		public event PropertyChangedEventHandler PropertyChanged;
		protected virtual void OnPropertyChanged(string propertyName)
		{
			if (PropertyChanged != null)
			{
				PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
			}
		}
	}
}

5、Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace videoFromBili_474458694
{
	public partial class Form1 : Form
	{
		//①创建绑定数据
		Data data = new Data();	

		public Form1()
		{
			InitializeComponent();

			//②控件绑定数据
			label1.DataBindings.Add("Text",data, "ValveState");
			button1.DataBindings.Add("BackColor", data, "ValveColor");
			textBox1.DataBindings.Add("Text", data, "ValveText");
		}

		private void button_Open_Click(object sender, EventArgs e)
		{
			data.ValveState = true;
		}

		private void button_Close_Click(object sender, EventArgs e)
		{
			data.ValveState = false;
		}
	}
}

参考

C#上位机数据绑定细节(实用干货分享)_哔哩哔哩_bilibili

【实战】Winform专题实战训练-数据绑定 B0951_哔哩哔哩_bilibili

C#winform数据绑定_winform bind-CSDN博客

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐