我们使用Linq To Sql定期设置简单的winforms。我最近发现,当用作DropDownList时,ComboBox控件仅在单击时更新底层数据绑定。因此,如果您选中控件,请按第一个字母选择您的条目,然后选项卡。底层数据绑定永远不会获得新值。 Linq将绑定属性设置为默认的ComboBox控件的文本值。
对此的修复是更改linq绑定值(感谢评论者RedDog指出这一点)。
所以我的问题是这样的:当从Linq拖动到Sql数据源时,如何设置Visual Studio使ComboBox自动将bindingsource设置为SelectedItem而不是Text?当然,保存工作,但也防止错误找到客户的方式。
答案 0 :(得分:1)
因此,如上所述,我相信您已通过绑定到SelectedItem
并确保将DataSourceUpdateMode
设置为OnPropertyChanged来解决此问题。
然而,通过改述的问题,你会发现你无法改变VS的行为。您必须对绑定的内容做出选择。那里有DefaultPropertyAttribute
at least some of the designer listens to,但我不知道它是否适用于绑定。
我将在我们的应用程序中添加一个帮助器类,在代码隐藏中手动添加所有绑定,而不是通过设计器。这为我们带来了许多好处,包括对我们所有绑定控件的常见行为“修复”。它还允许我们使用LINQ表达式来解析属性名称并确保绑定始终是数据源上的有效字段名称 - 如果通过设计器设置绑定,然后删除模式中的字段,那么您将不会知道问题直到运行时间。
在组合框的情况下,我们的助手类有以下方法的解决方法:
DataSourceUpdateMode
设为OnPropertyChanged
Parse
事件处理程序,以便在SelectedIndex
为-1时将绑定值重置为绑定类型的默认值SelectedIndex
(注意,由于某种原因绑定到SelectedValue
时必须执行更多特殊操作)