[.net] 将Winforms控件绑定到可空类型的最佳方法是什么?


Answers

我自己偶然发现了这个问题,这是一个非常头痛的问题。

关于绑定可空类型的有趣之处在于DataGridView可以毫无问题地处理它们 - 这只是导致问题的文本框。

这是非常讨厌的 - 它甚至似乎阻止关闭窗体,当你在文本框中有一个空的值,并且看起来你也不能摆脱它。

所以,这不是一个好的答案,但我的建议是尝试坚持datagridviews为窗体上的可空类型。

另一个建议是使用这里建议的'extender provider',虽然我还没有测试过:

编辑:现在已经下载了这个页面上的示例代码,它工作得很好。

http://www.thejoyofcode.com/Databinding_and_Nullable_types_in_WinForms.NET.aspx

Question

我目前正在使用winforms数据绑定来连接数据编辑表单。 我通过CodeSmith使用netTiers框架来生成我的数据对象。 对于允许空值的数据库字段,它会创建可为空的类型。 我发现使用winforms数据绑定控件将不能正确绑定到可空类型。

我在网上看到的解决方案建议人们创建新的文本框类,可以处理可空类型,但这可能是一个痛苦,必须换出我已经创建的窗体上的文本框。

起初,我认为使用扩展方法来做到这一点非常好。 基本上为文本框类创建一个扩展属性并绑定到那个。 从我有限的扩展方法的经验,做一些网上检查看起来像你不能做一个扩展属性。 据我所知,绑定必须通过一个属性,因为它需要能够获取或设置值,所以扩展方法将无法正常工作。

我很想找到一个干净的方式来使用扩展方法来改造这些表单,但是如果我必须创建新的文本框和组合框控件,那就是我将要做的。

由于要求在Windows 2000上运行,因此我的项目目前仅限于.Net 2.0。

有什么建议么?




Links