2008-11-14 61 views
5

这有点奇怪,但我一直在挣扎几个小时,我无法理解发生了什么。不能禁用数据绑定Winforms下拉列表

我想知道是否有其他人遇到过这个问题,也可以解释一下。我正在构建一个简单的Winforms应用程序,并尝试使用许多内置控件。

基本上,我有一个用户控件和一些数据捕获字段的表单。 3个字段是下拉列表,并且在用户控件上,我有一个bindingSource控件直接绑定到Product类。

在运行时,我向BindingSource提供Product类的一个实例,并且该类包含ProductType的属性。为了简单起见,我还在产品类中添加了一个List<ProductType> ProductTypes,该类可以在查询时自行加载,这意味着我可以使用相同的bindingSource并选择ProductTypes Data Member作为下拉列表的数据源。

在运行表单时,列表完美绑定,我可以看到列出的所有产品类型,并且我可以选择一个和选项卡或单击到下一个字段。但显然选定的值不会绑定,因为我没有选择任何绑定 - SelectedValue作为下拉列表,只有一个数据源。只要确保下拉列表通过绑定到Bindings-SelectedValue来修改产品的实例,然后运行表单,该列表仍然可以完美填充,并且只要我不从下拉菜单中进行选择。如果我从下拉菜单中进行选择,则下拉菜单的焦点为。我无法列出爱情或金钱,甚至无法单击表单上的取消按钮,关闭按钮右上角是我可以点击的唯一按钮,这是可行的,我无法点击任何其他字段或下拉菜单。一旦做出选择,这会影响所有三个下拉菜单。

任何人有任何想法我失踪?

我试着改变了一些东西,并通过提供一个字符串[]而不是一个对象的成员的下拉值取得了一些成功。这似乎工作,但击败使用数据绑定的对象不是吗?

任何帮助表示赞赏!

回答

8

只是在这里猜测,因为我没有时间设置测试并立即确认,但是您是否在进行任何验证?我似乎记得,如果内容不确认,数据绑定控件不会让你离开。即使你没有明确指出,试着将CausesValidation设置为False,看看后台是否有任何验证,至少可以给你一个提示。

+0

非常感谢汤姆 - 简直不敢相信那么简单!去显示当你不包括验证检查时会发生什么,因为它是一个测试应用程序;-) – RobertTheGrey 2008-11-14 18:40:23

0

对于Infragisticst Dropdowns(其他winform下拉菜单可能不是这样):如果将“LimitToList”设置为true,则可以将其停留在无法实现的下拉菜单中。甚至使用ItemNotInList触发警告消息。

1

感谢您对此的意见,帮助我围绕这一点打好基础。

在我的情况下,事实证明,我的ComboBox.Validating事件中的一个EventHadlers正在抛出异常。这很难追查,因为IDE没有向我显示这种例外。我能够修改异常行为(在调试菜单中)并让它显示任何正在抛出的InvalidOperationException异常,然后我就能够追踪它。

正如汤姆建议,关闭CuasesValidation是找出它的票据。