C#,VS-2010,winforms
通常,我想使用可绑定的 MyProperty 创建用户控件。但是我遇到了一些问题:当前行更改时数据行被修改。
您可以下载 C# 项目并自己尝试: test_bind.zip
为了简单起见,我确实遵循了:
- 使用
- dataGridView(设置为只读),
- 文本框,
- 一些带有一些表的类型化数据集
- 绑定源
- 将 bindingSource 绑定到表
- 将 dgv 绑定到 bindingSource
- 将 TextBox.Text 绑定到 bindingSource 到某个文本列(“名称”)
- 在带有一些数据的表单加载填充表上。(如果您手动添加行,请不要忘记 AcceptChanges())
- 为表 xxx_ColumnChanging(...) 添加事件处理程序并在那里设置断点
所有标准步骤,没什么特别的
跑
正如预期的那样 - dgv 中的行,文本框中的当前名称,单击网格中的不同行......并且只有当我修改文本框中的文本时,我才会在断点处停止。
让我们修改程序,并将 textBox 绑定到不同的属性而不是 Text - 让我们说Tag。设置 DataSourceUpdateProperty“ OnValidation ”或“ OnPropertyChanged ”。
跑
现在当前行被修改。!!!
当我使用带有虚拟属性的 UserControl 而不是 textBox 时,也会发生同样的情况
字符串 MyProperty { 设置;得到; }
如何将用户控件中的自定义属性绑定到与TextBox.Text 相同的行为?
注意: 绑定属性本身不是问题。问题是:当我绑定到标准 TextBox.Text 属性时 - 一切都好文我绑定到任何其他属性(标签)或用户控件中的自定义属性 - 然后 DATASOURCE 总是为当前行修改