将Collection类分配给列表框的项目

时间:2013-03-18 16:44:12

标签: c# collections listbox collectionbase

我确信应该有一种更简单的方法来做到这一点。我有一个基于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 = 

但是它告诉我这些项目是只读的。

1 个答案:

答案 0 :(得分:0)

在Windows窗体中:

  1. 您可以使用DataSource属性绑定对象的集合。
  2. DisplayMember属性为数据源对象中属性的名称。
  3. 示例代码: 在下面的示例中,输出列表框将显示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;