我有一个带有TextBox的Form,就像这样:
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
似乎Binding Left to X工作。和文本测试没有。当我将更改绑定位置时:
t.DataBindings.Add("Text", Testus , "Test");
t.DataBindings.Add("Left", Testus , "X");
比文本绑定工作而左边的X绑定没有。总而言之:只有第一个DataBinding有效。
所以我的问题是:如何将TextBox(Left,Text)的两个属性绑定到我的对象(Testus)的两个属性(X,Test),这样它才能正常工作?
答案 0 :(得分:0)
我总是这样做。
Binding b = new Binding("Test");
b.Source = tt;
t.SetBinding(TextBox.TextProperty, b);