2009-12-16 21 views
0

我遇到了在C#中的選中列表框中顯示對象的問題。我可以添加對象,但是當對象顯示給用戶時,程序會將複選框選擇輸出爲Salesform.order,而不是像我想要的那樣在訂單類中調用tostring方法。這導致多個訂單顯示爲相同的事物:「Salesform.order」。我在C#中的checkedlistbox顯示了它要顯示的對象的類型,但不是它的名稱

orderCheckList.Items.Add(orderUp); 

(這裏,orderUp是領域的訂單,如客戶名稱等)

誰能幫助?我知道我忽略了一個簡單的解決方案。

回答

6

CheckedListBoxDisplayMember設置爲您要顯示的屬性。例如:

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); 
    } 
} 
+0

感謝您的回答。但是,我怎樣才能訪問「姓氏」?類型是匿名的,所以我不能施放它。 – Paval 2013-05-20 16:51:24

+1

@Paval:從哪裏?您通常會設置「ValueMember =」LastName「」,然後獲取值。 – 2013-05-20 22:41:48

4

.ToString()在您添加到列表框中的每個項目上被調用。覆蓋它來解決這個問題。

相關問題