2013-03-27 36 views
0

我有持有我想要顯示的字符串,該項目的ID類。如何顯示的對象,其在列表框的的ToString?

ref class ListBoxItem { 
private: 
    int id; 
    String^name; 

public: 
    ListBoxItem(int id, const char * name) { this->id = id; this->name = gcnew System::String(name); } 
    virtual String^ToString() new { return name; } 
}; 

而且我每個項目添加到列表框是這樣的:

for(list<string>::iterator i = listItems.begin(); i != listItems.end(); i++) 
    listBoxItems->Items->Add(gcnew ListBoxItem(2, (*i).c_str())); 

這將產生正確數量項目的ListBox,但所有的項目被稱爲「ListBoxItem的」。

取而代之,我想讓ListBox顯示在ListBoxItem上調用ToString方法時產生的字符串。

回答

2

你沒有說你是否使用的WinForms或WPF,但我相信這個答案是有效期爲。

(注:有一個框架中的命名ListBoxItem類你可能想選擇一個不同的類名。)

我相信這個問題是在這裏:

virtual String^ToString() new { return name; } 
          ^^^ 

這意味着你」重新創建一個全新的ToString方法,它沒有什麼關係的Object.toString方法。當ListBox中調用的ToString,它沒有你的類定義,所以它只是調用Object.ToString(),你沒有改變。

切換到這一點,你應該是好:

virtual String^ToString() override { return name; } 
          ^^^^^^^^ 
+0

改變'new'到'override'工作,謝謝! – samwell 2013-03-28 00:51:09

相關問題