我有两个使用相同BindingSource的TextBox。当我更新一个TextBox并失去焦点时,另一个TextBox不会将其属性更新为新值。
非常感谢任何帮助。
using System.Data;
using System.Windows.Forms;
using System.ComponentModel;
namespace TextBoxes
{
public partial class Form1 : Form
{
BindingSource bs1 = new BindingSource();
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
void Form1_Load(object sender, System.EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Rows.Add("Donald Trump");
dt.Rows.Add("Sergei Rachmaninoff");
dt.Rows.Add("Bill Gates");
bs1.DataSource = dt;
bs1.RaiseListChangedEvents = true;
bs1.CurrencyManager.Position = 1;
textBox1.DataBindings.Add("Text", bs1, "Name");
textBox2.DataBindings.Add("Text", bs1, "Name");
}
}
}
答案 0 :(得分:0)
你可以使用endEdit强制刷新 - 如果你把它放在textchanged上,那么当你改变textbox1时,textbox2会自动改变。
private void textBox1_TextChanged(object sender, EventArgs e)
{
bs1.EndEdit();
}
(如果你想要互惠更新,也可以对textbox2的textchanged做同样的事情。)
虽然我会说如果你绑定到一个列表,组合会不会更好?
答案 1 :(得分:0)
在您的代码中添加以下方法...它将起作用...
<强> FormDesigner.cs 强>
this.textBox1.LostFocus += new System.EventHandler(this.textBox1_LostFocus);
this.textBox2.LostFocus += new System.EventHandler(this.textBox2_LostFocus);
<强> Form.cs 强>
private void textBox1_LostFocus(object sender, EventArgs e)
{
textBox2.DataBindings.Clear();
textBox2.DataBindings.Add("Text", bs1, "Name");
}
private void textBox2_LostFocus(object sender, EventArgs e)
{
textBox1.DataBindings.Clear();
textBox1.DataBindings.Add("Text", bs1, "Name");
}