【问题标题】:Binding a DataGridView and Textbox to the same Datable gives me a 'two binding' error将 DataGridView 和 Textbox 绑定到同一个 Datable 会给我一个“两个绑定”错误
【发布时间】:2020-10-16 15:03:32
【问题描述】:

我有两个DataTable,每个都绑定了自己的DataGridView和RichTextBox。

所以对于dataTable1,我绑定了dgvFirstOne和rtbFirstOne。 对于dataTable2,我绑定了dgvSecondOne和rtbSecondOne。

打开表单并使用 DataGridViews 可以完美运行。那里没有问题。但是,当我关闭表单 (this.close()) 时,我收到以下错误:

'这会导致集合中的两个绑定绑定到同一个 属性。'

我怀疑这是因为我有一个富文本框一个绑定到同一个数据表的 datagridview。

dgvFirstOne.DataSource = Form1.dataTable1;
rtbFirstOne.DataBindings.Add("Text", dataTable1, "DataColumn");

dgvSecondOne.DataSource = Form1.dataTable2;
rtbSecondOne.DataBindings.Add("Text", dataTable2, "DataColumn");

这让我觉得特别奇怪,因为在另一种形式中,我有一个 DataTable 和一个 DataGridView 和 RichTextBox 以相同的方式绑定,没有问题。

我也试过用这种方式绑定它,但结果相同:

this.bsFirstOne = new BindingSource();
bsFirstOne.DataSource = dataTable1;
rtbFirstOne.DataSource = bsFirstOne;
rtbFirstOne.DataBindings.Add("Text", rtbFirstOne, "Data", true, DataSourceUpdateMode.OnPropertyChanged);
bsFirstOne.BindingComplete += new BindingCompleteEventHandler(bsFirstOne_BindingComplete);

this.bsSecondOne = new BindingSource();
bsSecondOne.DataSource = dataTable2;
dgvSecondOne.DataSource = bsSecondOne;
rtbSecondOne.DataBindings.Add("Text", bsSecondOne, "Data", true, DataSourceUpdateMode.OnPropertyChanged);
bsSecondOne.BindingComplete += new BindingCompleteEventHandler(bsSecondOne_BindingComplete);

有人知道怎么回事吗?

【问题讨论】:

标签: c# .net


【解决方案1】:

每个控件一次只能有一个绑定。 这就是为什么在分配绑定源之前,只需使用 Clear() 方法清除旧绑定:

dgvFirstOne.DataSource = Form1.dataTable1;
rtbFirstOne.DataBindings.Clear();
rtbFirstOne.DataBindings.Add("Text", dataTable1, "DataColumn");

dgvSecondOne.DataSource = Form1.dataTable2;
rtbSecondOne.DataBindings.Clear();
rtbSecondOne.DataBindings.Add("Text", dataTable2, "DataColumn");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2021-07-15
    • 1970-01-01
    • 2014-06-07
    • 2010-09-20
    相关资源
    最近更新 更多