C# 同样的数据绑定不是';当我更改两个绑定文本框中的一个时更新

C# 同样的数据绑定不是';当我更改两个绑定文本框中的一个时更新,c#,winforms,data-binding,textbox,C#,Winforms,Data Binding,Textbox,我有两个使用相同BindingSource的文本框。当我更新一个文本框并失去焦点时,另一个文本框不会将其属性更新为新值 任何帮助都将不胜感激 using System.Data; using System.Windows.Forms; using System.ComponentModel; namespace TextBoxes { public partial class Form1 : Form {

我有两个使用相同BindingSource的文本框。当我更新一个文本框并失去焦点时,另一个文本框不会将其属性更新为新值

任何帮助都将不胜感激

    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");
            }
        }
    }

您可以使用endEdit强制刷新-如果您将其放在textchanged上,则当您更改textbox1时,textbox2将自动更改

private void textBox1_TextChanged(object sender, EventArgs e)
{
    bs1.EndEdit();
}
(如果您想要交互更新,请对textbox2的textchanged执行相同的操作)


虽然我想说,如果您绑定到一个列表,组合不是更好吗?

在代码中添加以下方法。。。它会起作用的

FormDesigner.cs

        this.textBox1.LostFocus += new System.EventHandler(this.textBox1_LostFocus);
        this.textBox2.LostFocus += new System.EventHandler(this.textBox2_LostFocus);
        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");
        }
Form.cs

        this.textBox1.LostFocus += new System.EventHandler(this.textBox1_LostFocus);
        this.textBox2.LostFocus += new System.EventHandler(this.textBox2_LostFocus);
        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");
        }

谢谢NDJ。我想用对话框编辑datagridview行。这是我老板想要的。你提供的解决方案对这个问题最有意义。非常感谢你!