我确信应该有一种更简单的方法来做到这一点。我有一个基于Collection的类,该类是另一个类的集合。目前,每当我在班级中有新项目时,我都会将该项目分配给列表框。我似乎无法找到一种方法来分配集合类中的所有值,因为它是一个集合,列表框的集合。有任何想法吗?感谢
好的,到目前为止我所做的是我在集合中使用的类中有一个tostring覆盖。这就是我希望列表框显示的内容。
public override string ToString()
{
return string.Format("{0} {1}: {2}", tTypev.ToString(),
Datev.ToString("MM/dd/yyyy"), Amountv.ToString("C"));
}
这就是我希望列表框中的每个项目显示的内容。
class Transactions : System.Collections.CollectionBase
{
...
}
是我的集合类,包含其他类的集合,Tansaction。当然,我使用lstTransactions.Items.Add(),. Remove,.RemovAt等将项目添加到列表框,然后使用.Add(),. Removem等将项目添加到Collection Class,Transactions。但我试图减少对外部控件的依赖,并且只在几行代码中使用它们。我试图使用类似的东西:
lstTransactions.DataSource = (Transaction)myTrans;
但这似乎不起作用。主要是因为我无法弄清楚DataSource采用了什么属性。
我也尝试过:
lstTransactions.Items =
但是它告诉我这些项目是只读的。
答案 0 :(得分:0)
在Windows窗体中:
示例代码: 在下面的示例中,输出列表框将显示2个项目:Apple和Ball。
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
EmployeeCollection data = new EmployeeCollection();
data.AddEmployee(new Employee("Apple", 25));
data.AddEmployee(new Employee("Ball", 50));
listBox1.DataSource = data;
listBox1.DisplayMember = "Name";
}
}
public class Employee
{
public Employee(string name, int age)
{
this.Name = name;
this.Age = age;
}
public int Age
{
get; private set;
}
public string Name
{
get; private set;
}
}
public class EmployeeCollection : System.Collections.CollectionBase
{
public void AddEmployee(Employee employee)
{
this.List.Add(employee);
}
}
}
在WPF中:
你可以使用ListBox的ItemSource属性绑定一个集合(可能是List,Enumerable,Collections .._做这个工作
示例代码段
IList<string> data = new List<string>() {"A", "B"};
ListBox listBox = new ListBox();
listBox.ItemsSource = data;