我目前正在尝试实现一个相对简单的数据管理应用程序。
我有一个 classMember
和 a BindingList<Member> membersList
,以及 aListBox
和一些TextBox
es 。
是ListBox
必然的membersList
。
现在,理想情况下,我希望将TextBox
es 绑定到ListBox.SelectedItem
,以便用户在 中选择的任何元素在ListBox
编辑TextBox
中的元素时membersList
都会更新。
我尝试将TextBox
es 绑定到ListBox.SelectedItem
,但这使得 成为绑定创建时引用的Binding
实际元素,而不是 中选择的任何项目。ListBox.SelectedItem
ListBox
firstNameTextBox.DataBindings.Add(new Binding("Text", membersList.SelectedItem, "firstName", false, DataSourceUpdateMode.OnPropertyChanged));
实际上,我已经通过在事件处理程序中清除并重新创建 es 来解决这个问题Bindings
,但这感觉非常“hacky”,我怀疑有一个更标准的解决方案。TextBox
membersList_SelectedIndexChanged(object sender, EventArgs e)
我的另一个想法是将 s 设置为事件处理程序内部的Binding
a ,但随后我必须手动将更改写入相应的项目,这也让我觉得这不是最佳解决方案。Member temporaryMember
ListBox.SelectedItem
membersList_SelectedIndexChanged(object sender, EventArgs e)
membersList
有没有一种方法可以实现Binding
动态化,即在创建时,我向它表明数据源正在发生变化?
或者一种更改Binding
数据源而不删除它并创建新数据源的标准方法?(或者这实际上是最佳实践?)
(另一件事要提的是:我是 C# 新手Bindings
,在寻找解决方案时,我发现显然有两个不同的类,一个在命名空间中System.Windows.Data
,另一个在System.Windows.Forms
命名空间中。我想我正在使用后者的类。也许我应该使用另一个?)
GCT1015
相关分类