【发布时间】:2015-07-26 13:07:15
【问题描述】:
我创建了一个我的自定义类对象的列表“employeeList”。 该类称为“Employee”:
public class Employee
{
public string firstName;
public string lastName;
public string region;
public Position position;
public List<double> goals;
public List<double> tests;
public double correlation;
public Employee supervisor;
....
}
这里我将列表传递给 Form.cs 并将我的列表绑定到组合框
var employeeList = correlation.ComputeCorrelation();
var bSource = new BindingSource();
bSource.DataSource = employeeList;
comboBox1.DataSource = bSource.DataSource;
Employee f = (Employee)comboBox1.SelectedItem;
老实说,我还没有完全弄清楚整个绑定是如何工作的,但这不是问题。问题是,一旦绑定完成,所有项目都会以它们的默认名称出现在组合框中,例如 Correlation_new.Employee。我想要做的是通过 Employee 类中的字段“名称”显示项目。我怎么做?
另外,我只是不知道如何处理在组合框中选择项目的事件。我需要获取该项目的内容。
【问题讨论】:
-
您确实需要阅读教程。你在这里问第一章的问题。您的 Employee 类正在使用字段,您可能希望这些是属性。是的,当 ComboBox 的选定项目发生更改时,您可以使用 SelectedIndexChanged 事件或类似的事件。您也可以重写Employee类的ToString函数来修复ComboBox中显示的内容。
-
@LarsTech 好吧,SelectedIndexChanged 不起作用。 private void combobox1__TextChanged(object sender, EventArgs e) { }
-
“不起作用”并没有真正描述问题。你写的看起来像 TextChanged 事件。您也必须手动或通过设计器连接正确的事件。
-
我也使用了那个代码。事件没有发生,我不知道为什么。一切都写得正确 private void combobox1_SelectedIndexChanged(object sender, EventArgs e) { Employee f = (Employee)comboBox1.SelectedItem; listBox1.Text = f.firstName; }
-
你把事件联系起来了吗?在设计器属性窗口中,选择闪电、双击事件等。
标签: c# winforms list data-binding combobox