1

名前と番号の 2 つの列を持つリスト ビューがあります。これらすべての項目を読み取り、名前をコンボ ボックスの表示メンバーに、番号を値のメンバーに割り当てたいと考えています。私は従うべきアプローチを考えてみましたが、自分自身を助けることができませんでした. これは私が試したものです。どのように進めればよいですか?

    public class numbers
    {
        public string name;
        public string number;
    }
    public class names : List<numbers>
    { 

    }
    names cname = new names();

    public void addcontacts()
    {
        foreach(ListView lv in bufferedListView1)
        {
         //No idea how to proceed
4

1 に答える 1

1

まず、独自のタイプを設定します。

public class myContact
{
    public string Name { get; set; }
    public string Number { get; set; }

    public myContact(string name, string number)
    {
        this.Name = name;
        this.Number = number;
    }

    public override string ToString()
    {
        return Name;
    }
}

次に、次のようにすべてのアイテムをリストビューからコンボボックスに転送します。

foreach (ListViewItem item in listView1.Items)
{
    comboBox1.Items.Add(new myContact(item.Text, item.SubItems[0].Text));
}

この例では、各 listviewitem が名前を保持し、その最初の子が番号を保持していると想定しています。

オブジェクトをコンボボックスに追加すると、C# はオブジェクトの ToString() メソッドを使用して、プログラムの実行中に実際に表示されるものを作成します。デフォルトの ToString() メソッドを独自のメソッドでオーバーライドし、名前のみを返します。コンボボックスからの選択を使用する場合は、selectedItem を myContact にキャストし、そこの番号にアクセスできます。OOPへようこそ:)

于 2012-08-07T12:03:31.823 に答える