0
我有一個文本框在窗體上這樣說:如何控制的兩個屬性結合兩個對象的屬性正確
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控件的單擊和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(Left,Text)的兩個屬性綁定到我的對象(Testus)(X,Test)的兩個屬性,以便它能夠正常工作?