C# 使用数据绑定将一个数据库文本拆分为3个文本框
我有3个字母的数据库单元格 它通过数据绑定连接到我的文本框 它能工作,但我希望它能像这样工作:C# 使用数据绑定将一个数据库文本拆分为3个文本框,c#,visual-studio,winforms,data-binding,textbox,C#,Visual Studio,Winforms,Data Binding,Textbox,我有3个字母的数据库单元格 它通过数据绑定连接到我的文本框 它能工作,但我希望它能像这样工作: 使用数据绑定将3个字母拆分为每个文本框。但是如何实现呢?我描述了一种可能性,但是有不同的方法可以实现相同的结果。我发现,与其他可能尝试使用Binding.Format并将值“推”到单个字符文本框中的解决方案相比,此解决方案引入的副作用(如果有的话)最少。我不喜欢这种副作用 您没有指定它,但我假设您有一个“data”对象,其中暴露了“Code_3”属性。我还将假设此对象实现了INotifyProp
使用数据绑定将3个字母拆分为每个文本框。但是如何实现呢?我描述了一种可能性,但是有不同的方法可以实现相同的结果。我发现,与其他可能尝试使用
Binding.Format
并将值“推”到单个字符文本框中的解决方案相比,此解决方案引入的副作用(如果有的话)最少。我不喜欢这种副作用
您没有指定它,但我假设您有一个“data”对象,其中暴露了“Code_3”属性。我还将假设此对象实现了INotifyPropertyChanged
,否则您将不得不解释如何具体实现数据绑定,我将相应地调整我的答案
其基本思想是在数据对象上增加3个属性,“code_3”属性值的每个字符对应一个属性。另一个假设是它将始终是3位数字
最后,将三个单字母文本框绑定到相应的三个新属性
这些属性的实现方式可以是简单地使用String.Left
、String.Right
或String.Mid
,也可以是代码3字符串值的索引(mycode3[0]等等)
最后一步是确保从数据对象的“Code_3”属性的setter调用这3个属性的setter。这将引发每个字符的INotifyPropertyChanged事件,导致文本框刷新。您可能希望将绑定设置为“OnValueChanged”