-3

これを行うためのより簡単な方法があるはずです。コレクションに基づくクラスがあり、そのクラスは別のクラスのコレクションです。現在、クラスに新しいアイテムがあるときはいつでも、そのアイテムをリストボックスに割り当てています。コレクションクラスのすべての値をコレクションであるため、リストボックスのコレクションに割り当てる方法がわかりません。何か案は?ありがとう

わかりました、これまでに行ったことは、コレクションで使用されるクラスに 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 などを使用してコレクション クラス、トランザクションにアイテムを追加します。しかし、外部コントロールへの依存を減らし、数行のコードでのみ使用するようにしています。私は次のようなものを使用しようとしていました:

lstTransactions.DataSource = (Transaction)myTrans;

しかし、それはうまくいかないようでした。主な理由は、DataSource がどのプロパティを取得したかを把握できなかったためです。

私も試しました:

lstTransactions.Items = 

しかし、アイテムは読み取り専用であると言われました。

4

1 に答える 1

0

Windows フォームの場合:

  1. DataSource プロパティを使用して、オブジェクトのコレクションをバインドできます。
  2. DisplayMember プロパティをデータ ソース オブジェクト内のプロパティの名前に変更します。

サンプル コード: 以下のサンプルでは、​​出力リスト ボックスに Apple と Ball の 2 つの項目が表示されます。

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 プロパティを使用して、コレクションをバインドすることができます (リスト、列挙可能、コレクションなどの場合があります)。

サンプル スニペット:

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

ListBox listBox = new ListBox();
listBox.ItemsSource = data;
于 2013-03-18T17:10:13.677 に答える