-3

我相信应该有更简单的方法来做到这一点。我有一个基于 Collection 的类,该类是另一个类的集合。目前,每当我的班级中有新项目时,我都会将该项目分配给列表框。我似乎无法找到将集合类中的所有值分配给列表框集合的方法,因为它是一个集合。有任何想法吗?谢谢

好的,到目前为止我所做的是我在集合中使用的 Class 中有一个 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()、.Remove 等将项目添加到 Collection Class、Transactions。但我试图减少对外部控件的依赖,并且只在几行代码中使用它们。我试图使用类似的东西:

lstTransactions.DataSource = (Transaction)myTrans;

但这似乎不起作用。主要是因为我无法弄清楚 DataSource 采用了什么属性。

我也试过:

lstTransactions.Items = 

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

4

1 回答 1

0

在 Windows 窗体中:

  1. 您可以使用 DataSource 属性来绑定对象集合。
  2. DisplayMember 属性为数据源对象中的一个属性的名称。

示例代码: 在下面的示例中,输出列表框将显示 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;
于 2013-03-18T17:10:13.677 回答