C# Winforms、数据绑定、列表框和文本框
我的屏幕上有一个列表框(C# Winforms、数据绑定、列表框和文本框,c#,vb.net,winforms,data-binding,C#,Vb.net,Winforms,Data Binding,我的屏幕上有一个列表框(MyListBox)和一个文本框(MyTextBox) 列表框中填充了一个列表(共T个),这些列表都是自定义项 现在我尝试这样做: ListBox的数据源是(T的)列表 现在,当项目发生更改时,我希望文本框更新为列表框中所选项目的特定属性 在法典中,这意味着: Me.MyListBox.DisplayMember = "SelectionName" Me.MyListBox.ValueMember = "Id" MyTextbox
MyListBox
)和一个文本框(MyTextBox
)
列表框中填充了一个列表(共T个),这些列表都是自定义项
现在我尝试这样做:
ListBox的数据源是(T的)列表
现在,当项目发生更改时,我希望文本框更新为列表框中所选项目的特定属性
在法典中,这意味着:
Me.MyListBox.DisplayMember = "SelectionName"
Me.MyListBox.ValueMember = "Id"
MyTextbox.DataBindings.Add(New Binding("Text", Me._listOfItems, "SelectedItem.Comment", True, DataSourceUpdateMode.OnPropertyChanged))
Me.MyListBox.DataSource = Me._listOfItems
这是行不通的。但是当我绑定到SelectedValue而不是SelectedItem时,它工作得非常好
\u列表项
声明如下:
Dim _listOfItems As List(Of MyItem) = New List(Of MyItem)()
其中MyItem
是:
public class MyItem
{
public string SelectionName { get; set; }
public int Id { get; set; }
public string Comment { get; set; }
}
我试图覆盖MyItem
中的ToString()
,以便它使用它。但这也不行
有人想试试吗?我想,最简单的方法之一是使用,将其设置为设计时的
绑定源代码的属性
在表单上放置一个BindingSource
李>
将ListBox.DataSource
属性设置为BindingSource
李>
像实际操作一样设置ValueMember
和DisplayMember
属性李>
为文本框
控件创建数据绑定
,并使用BindingSource
作为源,使用MyItem.Comment
属性李>
将您的列表(MyItem)
分配给您的Binding.DataSource
属性李>
文本框应位于CurrencyManager.CurrentItem
的注释属性之后,即当前的列表框。选择EdItem
实际上,您可能需要实现该接口以使其正常工作
但是,如果这一切都与SelectValue完美配合,为什么不直接使用它呢?下面的代码显示了我是如何做到这一点的。我首先将ListBox数据源设置为一个包含BindingList集合的类。该类实现了IBindingList。我有两个文本框要绑定SelectedItem。下面的代码是我如何操作的:
lbControl.DataSource = SharepointTestBusinessLayer.Control.ListAll();
lbControl.DisplayMember = "ControlName";
lbControl.SelectedIndex = 0;
scTextBoxControlID.DataBindings.Add("Text", this.lbControl.DataSource, "ControlID");
scTextBoxControlName.DataBindings.Add("Text", this.lbControl.DataSource, "ControlName");
SelectedValue是Id,我需要注释。我不能用它来调用数据库:)我会试试你的解决方案!我得到了它!您是对的,如果您想为用户提供一个选择,那么我们就不要使用Id.=Poption 5(不需要:),对于选项4:我使用这个绑定:新绑定(“Text”,bindingSource1,“Comment”),因为它已经使用bindingSource的.Current属性了!非常感谢。