简单数据绑定
控件的属性和对象的属性绑定在一起。
控件 ------ 对象
控件属性 ------ 对象属性
控件属性值 ----- 对象属性值
效果:
控件属性值改变,对象属性值也跟着改变;对象属性值改变,控件属性值也跟着改变。
1.控件从后台找到对象,显示对象
2.双方任意一方的属性改变,就会改变另外一方的属性。
using System.ComponentModel; namespace TempTest { /// <summary> /// 要实现双向绑定需要继承System.ComponentModel.INotifyPropertyChange接口。若不继承此接口则只能单向绑定,对对象属性值的更改不会通知控件更新。 /// </summary> class Person : INotifyPropertyChanged { #region 属性 public string Name { get => mName; set { mName = value; SendChangeInfo("Name"); } } public string Address { get => mAddress; set { mAddress = value;SendChangeInfo("Address"); } } public int Age { get => mAge; set { mAge = value; SendChangeInfo("Age"); } } #endregion private string mName; private string mAddress; private int mAge; /// <summary> /// 属性改变后需要调用的方法,触发PropertyChanged事件。 /// </summary> /// <param name="propertyName">属性名</param> private void SendChangeInfo(string propertyName) { if (this.PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } /// <summary> /// 实现的接口。 /// </summary> public event PropertyChangedEventHandler PropertyChanged; } }
Binding bingding = new Binding("Text", person, "Name"); this.textBox1.DataBindings.Add(bingding);
// // 摘要: // 在数据绑定控件的值更改时发生。 public event ConvertEventHandler Parse; // // 摘要: // 表示将处理的方法 System.Windows.Forms.Binding.Parse 和 System.Windows.Forms.Binding.Format // 事件 System.Windows.Forms.Binding。 // // 参数: // sender: // 事件源。 // // e: // 包含事件数据的 System.Windows.Forms.ConvertEventArgs。 public delegate void ConvertEventHandler(object sender, ConvertEventArgs e); // // 摘要: // 提供有关 System.Windows.Forms.Binding.Format 和 System.Windows.Forms.Binding.Parse // 事件的数据。 public class ConvertEventArgs : EventArgs { // // 摘要: // 初始化 System.Windows.Forms.ConvertEventArgs 类的新实例。 // // 参数: // value: // System.Object ,其中包含当前属性的值。 // // desiredType: // System.Type 的值。 public ConvertEventArgs(object value, Type desiredType); // // 摘要: // 获取或设置的值 System.Windows.Forms.ConvertEventArgs。 // // 返回结果: // System.Windows.Forms.ConvertEventArgs 的值。 public object Value { get; set; } // // 摘要: // 获取所需值的数据类型。 // // 返回结果: // System.Type 的所需的值。 public Type DesiredType { get; } }