初学WinForm,记录一下学习过程,路漫漫其修远兮。
练习目标:将自定义变量与界面控件进行绑定。TrackBar:tbValue,TextBox:txtValue,Label:lbValue 三个控件,自定义属性 int MyValue;
注意:与控件进行绑定的属性,要设置为 public 权限,否则运行时会报错:无法绑定到 DataSource 的属性或列。
假定界面已经拖放了三个控件:TrackBar:tbValue,TextBox:txtValue,Label:lbValue。控件与属性绑定的代码如下:
public partial class Form1 : Form
{
public int MyValue { get; set; }
public Form1()
{
InitializeComponent();
tbValue.DataBindings.Add("Value", this, "MyValue", true, DataSourceUpdateMode.OnPropertyChanged);
txtValue.DataBindings.Add("Text", this, "MyValue", true, DataSourceUpdateMode.OnPropertyChanged);
lbValue.DataBindings.Add("Text", this, "MyValue", true, DataSourceUpdateMode.OnPropertyChanged);
}
}
这样就把三个控件以及自定义属性绑定到一起了,四者众任何一方的数据发生变化都会更行到其他三者。
注意1:测试中发现,TextBox的DataBindings.Add方法,不能添加两次,否则会运行报错,不允许两个集合绑定到同一属性。例如一下代码会报错:
public Form1()
{
InitializeComponent();
txtValue.DataBindings.Add("Text", tbValue, "Value", true, DataSourceUpdateMode.OnPropertyChanged);
txtValue.DataBindings.Add("Text", this, "MyValue", true, DataSourceUpdateMode.OnPropertyChanged);
}
注意2:假定设置 TrackBar 的数值范围:0-100,TrackBar与TextBox进行绑定都运行,如果 TextBox中输入的数值超过100或者小于0,即不再范围内,或者TextBox的值为空时,程序不会报错,但是测试中发现,窗体的关闭按钮已经不起作用,可能时内部已经触发了异常,导致关闭按钮失效。所以,在做相应的变量绑定时候,需要注意取值范围限定。