无法跳出数据绑定Winforms下拉列表

时间:2008-11-14 16:22:17

标签: winforms user-controls controls

这有点奇怪,但我现在已经挣了几个小时,我无法理解发生了什么。

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

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

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

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

任何人都有任何我缺少的想法吗?

我尝试过改变一些事情,并通过将下拉值输入一个字符串[]而不是一个对象的成员来取得一些成功。这似乎有效,但是否认使用数据绑定的对象不是吗?

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:10)

在这里猜测,因为我没有时间设置测试并立即确认,但你在做任何验证吗?我似乎记得,如果内容不验证,数据绑定控件将不允许您离开。即使你没有明确,也可以尝试将CausesValidation设置为False以查看幕后是否有任何类型的验证,这可能至少会给你一个提示。

答案 1 :(得分:2)

感谢您对此的投入,帮助我解决了这个问题。

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

正如汤姆建议的那样,关闭CuasesValidation是解决它的门票。

答案 2 :(得分:0)

对于Infragisticst Dropdown(对于其他winform下拉列表可能不是这样):如果你将“LimitToList”设置为true,你可能会被困在一个你无法忘记的下拉列表中。使用ItemNotInList甚至可以触发警告消息。