[英]How to bind control's two properties to two object properties properly
我有一個帶有TextBox的窗體,如下所示:
Form f = new Form();
TextBox t = new TextBox ();
t.Click += new EventHandler(t_Click);
t.LostFocus += new EventHandler(t_LostFocus);
Testus tt = new Testus();
t.DataBindings.Add("Left", Testus , "X");
t.DataBindings.Add("Text", Testus , "Test");
f.Controls.Add(t);
f.ShowDialog();
和Testus類是這樣的:
class Testus
{
public string Test
{
get
{
return _text;
}
set
{
Console.WriteLine("Acomplished: text change");
_text = value;
}
}
private string _text;
public int X
{
get
{
return x;
}
set
{
Console.WriteLine("Acomplished: X changed");
x = value;
}
}
int x;
public Testus()
{
}
}
如您所見,我將TextBox綁定到Testus類。 具體來說,我將TextBox.Left綁定到Testus.X,將TextBox.Text綁定到Testus.Test。 我想補充一下,更改Controls Left值會影響Testus.X值,反之亦然。 與TextBox.Text和Testus.Test相同。
我為TextBox控件的Click和LostFocus添加了處理程序,如下所示:
static void t_LostFocus(object sender, EventArgs e)
{
Console.WriteLine("TextBox lost focus");
}
static void t_Click(object sender, EventArgs e)
{
Console.WriteLine("Moving to right...");
((Control)sender).Left = 100;
}
我做這個測試:
我在控制台中得到以下結果:
TextBox lost focus
就是這樣! Testus.Test不會改變它的價值!?
但是當我這樣做時:
我得到以下結果:
Moving to right...
Acomplished: X changed
似乎將“綁定到X”起作用。 和文本不測試。 當我將綁定的位置更改為此時:
t.DataBindings.Add("Text", Testus , "Test");
t.DataBindings.Add("Left", Testus , "X");
比文本綁定有效,而X綁定無效。 因此,總而言之:只有第一個DataBinding起作用。
所以我的問題是:如何將TextBox的兩個屬性(左,文本)綁定到我的對象(Testus)的兩個屬性(X,Test),以便其正常工作?
我一直這樣做。
Binding b = new Binding("Test");
b.Source = tt;
t.SetBinding(TextBox.TextProperty, b);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.