0

C# のチェックされたリスト ボックスにオブジェクトを表示する際に問題が発生しています。オブジェクトをうまく追加できますが、オブジェクトがユーザーに表示されると、プログラムはチェックボックスの選択を Salesform.order として出力し、注文クラスで tostring メソッドを呼び出すのではなく、必要に応じて呼び出します。これにより、複数の注文が同じ「Salesform.order」として表示されます。

orderCheckList.Items.Add(orderUp);

(ここで orderUp は顧客名などのフィールドを持つ注文です)

誰でも助けることができますか?私が見落としている簡単な解決策があることは知っています。

4

2 に答える 2

6

DisplayMemberの を、表示するプロパティに設定しCheckedListBoxます。例えば:

orderCheckList.DisplayMember = "Title";
// Now orderUp.Title will be displayed

( ToString()Ragepotato で提案されているように、オーバーライドも同様に機能しDisplayMemberますが、さまざまな異なるコンテキストで同じデータ型を使用できることを意味するため、使用はより柔軟です。)

サンプルコード:

using System.Windows.Forms;

class Test
{
    static void Main()
    {
        Form f = new Form
        {
            Controls =
            {
                new CheckedListBox
                {
                    Items = 
                    {
                        new { FirstName = "Jon", LastName = "Skeet" },
                        new { FirstName = "Holly", LastName = "Skeet" }
                    },
                    DisplayMember = "FirstName"
                }
            }
        };
        Application.Run(f);
    }
}
于 2009-12-16T20:39:14.667 に答える
4

.ToString()リスト ボックスに追加する各項目に対して呼び出されます。この問題を解決するには、オーバーライドします。

于 2009-12-16T20:37:23.857 に答える