1

だから私はと呼ばれるクラスを持っていますCustomerCollection

class CustomerCollection
    {
        public List<Customer> Customers { get; private set; }
...
}

それはのリストを持っていますcustomers

class Customer
{
    public String ID { get; private set; }
    public String Name { get; private set; }

    public Customer(String id, String name)
    {
        ID = id;
        Name = name;
    }
}

Customersコンボボックスが可能なすべてのIDを表示しCustomer Collection、テキストボックスが選択した顧客の名前を表示するように、コンボボックスとテキストボックスをバインドする方法はありますか?

編集:これが私が試したことです

    private void InitializeCustomerCollection()
    {
        var customerCollection = new CustomerCollection();
        cmbx_custID.DataSource = customerCollection.Customers;
    }

しかし、それは機能せず、コンボボックスがいっぱいになります

X.Collections.Customer
X.Collections.Customer
X.Collections.Customer
4

2 に答える 2

3

これは、説明した動作でフォームにコンボ ボックスを追加する方法を示しています。重要なのは、ValueMember と DisplayMember の設定です。

  public partial class Form1 : Form
  {
     public Form1()
     {
        InitializeComponent();
        CustomerCollection cc = new CustomerCollection();
        cc.Customers.AddRange(new Customer[] {new Customer("1", "Adam"), new Customer("2", "Bob")});

        ComboBox ComboBox1 = new ComboBox()
           {Name = "ComboBox1", ValueMember = "ID", DisplayMember = "Name"};
        Controls.Add(ComboBox1);

        ComboBox1.DataSource = cc;
     }
  }

  public class Customer
  {
     public String ID { get; private set; }
     public String Name { get; private set; }

     public Customer(String id, String name)
     {
        ID = id;
        Name = name;
     }
  }

  class CustomerCollection : IListSource
  {
     public List<Customer> Customers { get; private set; }
     public CustomerCollection()
     {
        Customers = new List<Customer>();
     }

     public bool ContainsListCollection
     {
        get { return true; }
     }

     public System.Collections.IList GetList()
     {
        return Customers;
     }
  }
于 2013-10-03T18:30:43.503 に答える
0

WPF では、次のようなことができます。

<ComboBox ItemSource={Binding Customers} x:Name="SelectedComboBox"/>
<TextBox Text={Binding SelectedItem.Name, ElementName=SelectedComboBox/>
于 2013-10-03T18:11:39.060 に答える