[英]How to use DataBindings property properly?
我正在嘗試將Windows窗體標簽綁定到變量。 當我運行該代碼lable1時顯示為50,但是當我使用button1遞增時,它不會更改為51。這是我的嘗試
int x = 50;
public int X
{
get { return x; }
set { x = value; }
}
public Form1()
{
InitializeComponent();
label1.DataBindings.Add("Text", this, "X", true, DataSourceUpdateMode.OnPropertyChanged);
}
private void button1_Click(object sender, EventArgs e)
{
X++;
}
TIA
int X = 50;
public Form1() {
InitializeComponent();
label1.Text = X.ToString();
}
private void button1_Click(object sender, EventArgs e) {
X += 1;
label1.Text = X.ToString();
}
您可以將數據放入實現INotifyPropertyChanged的另一個類中,以便通知和更新UI:
public partial class Form1 : Form
{
DataClass dc;
public Form1()
{
InitializeComponent();
dc = new DataClass();
label1.DataBindings.Add("Text", dc, "X", true, DataSourceUpdateMode.OnPropertyChanged);
}
private void button1_Click(object sender, EventArgs e)
{
dc.X++;
}
}
public class DataClass : INotifyPropertyChanged
{
int x = 50;
public int X
{
get { return x; }
set
{
x = value;
NotifyPropertyChanged("X");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
}
您的類表單必須實現INotifyPropertyChanged
接口,如下所示:
public partial class Form1 : Form, INotifyPropertyChanged
{
int x = 50;
public int X
{
get { return x; }
set { x = value; OnPropertyChanged("X"); }
}
private void Form1_Load(object sender, EventArgs e)
{
label1.DataBindings.Add("Text", this, "X", true, DataSourceUpdateMode.OnPropertyChanged);
}
private void button1_Click(object sender, EventArgs e)
{
X++;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.