【发布时间】:2022-10-25 23:28:05
【问题描述】:
我有一个带有三个文本框的表单,其中第一个和第二个绑定到同一个数据绑定源。当表单加载时,我需要填充第一个文本框,以便第二个可以使用它的数据来查找它的描述并填充第三个文本框。但是,我的第二个文本框在我的第一个文本框之前填充,这意味着当调用 _TextChanged 函数时,第一个文本框的值是一个空字符串,对第三个文本框无用。
什么决定了数据绑定文本框的填充顺序,如何更改此顺序,以便在调用第二个文本框 TextChanged 函数时,我的第一个文本框有数据?
【问题讨论】:
-
您可以将计算的列/属性添加到数据源并将第二个 TextBox 绑定到它,因此当
Current更改时,您已经收到计算值。类似于带有 Expression 属性集的 DataTable 的列 -
不幸的是,这不是一个选择。这方面的数据表需要能够更新 SQL 表,所以如果我绑定到表中不存在的表达式列,它就不能很好地保存。我无法更改绑定,我只需要知道如何先更新一个。
-
那么也许您可以避免使用 Control 的 TextChanged 事件,而是订阅 BindingSource 的
CurrentChanged或PositionChanged事件,并在引发事件时设置第三个 TextBox 的 Text 值——在这种情况下,当您设置数据绑定,首先调用[BindingSource].SuspendBinding(),然后在设置所有绑定后,调用[BindingSource].ResumeBinding()
标签: c# winforms textbox bindingsource