Назначьте класс 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 (),.Remove и т. Д. Для добавления элементов в класс Collection, Transactions. Но я пытаюсь уменьшить зависимость от внешних элементов управления и использовать их только в нескольких строках кода. Я пытался использовать что-то вроде:

lstTransactions.DataSource = (Transaction)myTrans;

но это не сработало. Главным образом потому, что я не мог понять, какое свойство взял DataSource.

Я также попробовал:

lstTransactions.Items = 

но это сказало мне, что пункты были только для чтения.

1 ответ

В форме 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:

Вы можете использовать свойство ItemSource ListBox, чтобы связать коллекцию (которая может быть List, Enumerable, Collections.._ делать работу

Образец фрагмента:

IList<string> data = new List<string>() {"A", "B"};

ListBox listBox = new ListBox();
listBox.ItemsSource = data;
Другие вопросы по тегам