表单有1个Combobox和1个ListBox。单击“添加”按钮时,我想将组合框中的所选项目添加到列表框中。
public partial class MyForm:Form
{
List<MyData> data = new List<MyData>();
private void ShowData()
{
listBox1.DataSource = data;
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
}
private void buttonAddData_Click(object sender, EventArgs e)
{
var selection = (MyData)comboBox1.SelectedItem;
data.Add(selection);
ShowData();
}
}
在本示例中,所选项目将替换为 ListBox 中的新选择。我需要将该项目添加到列表中。
我的代码有什么问题吗?
listbox1.DataSource
属性会查找值更改,但通过始终分配相同的列表,该值不会真正更改。
您可以使用BindingList<T>
,而不是你的List<T>
,自动识别添加的新项目。您的 ShowData() 方法必须在启动时调用一次。
public partial class MyForm:Form
{
public MyForm(){
InitializeComponent();
ShowData();
}
BindingList<MyData> data = new BindingList<MyData>();
private void ShowData()
{
listBox1.DataSource = data;
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
}
private void buttonAddData_Click(object sender, EventArgs e)
{
var selection = (MyData)comboBox1.SelectedItem;
data.Add(selection);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)