2

私が作成した contactperson オブジェクトを入力したいリストボックスがあります。ユーザーはいくつかのテキストフィールドを含む小さなフォームに入力し、ユーザーが [OK] ボタンを押すと contactperson オブジェクトが作成されます。

問題は、contactpersoon オブジェクトの name プロパティをリストボックスに項目として追加したいということです。しかし、リストボックスから削除したいときは、nameプロパティではなく、オブジェクトのidプロパティで削除したい...

誰でもこれで私を助けることができますか?辞書を使用してみましたが、正しく動作しませんでした。

誰でもこれについてアドバイス/助けてもらえますか?

どうもありがとうございました..

ところで、英語が下手で申し訳ありません:p

4

3 に答える 3

3

ListBoxにバインドするときに、これを使用します-

listbox.DisplayMember = "name";
listbox.ValueMember = "id";

このようにIDを隠し値として保存できます。

于 2012-06-05T20:39:15.757 に答える
2

ContactPerson クラスの ToString メソッドをオーバーライドする必要があります。例えば:

public class ContactPerson
{
    public string Name;
    public string Id;

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

次に、実際の ContactPerson オブジェクトをリスト ボックスに追加できます。例えば:

listbox.Items.Add(contactPerson);

次に、削除するときに、リスト内の各項目をループして、次のような ContactPerson オブジェクトの任意のプロパティを読み取ることができます。

foreach(object item in listbox.Items)
{
    if((ContactPerson)item.Id == ...)
    {
        // do work
    }
}
于 2012-06-05T20:38:17.587 に答える
1

ToString()ContactPersonクラスの関数をオーバーライドして、名前だけでなくオブジェクト全体をListBoxに追加してみてください。はListBox.Items、文字列だけでなく、オブジェクトのコレクションです。はToString()、オブジェクトのテキスト値を表示するためにListBoxコントロールによって使用されます。

または、を作成しList<contactperson>てデータソースとして使用し、リストボックスのフィールドDisplayMemberValueMemberフィールドを設定することもできます。 DisplayMember表示される名前にValueMemberなり、IDフィールドになります。

于 2012-06-05T20:39:10.353 に答える