2011-11-24 50 views
0

我終於弄到了我的應用程序中的wxChoice控件,並且由於某種原因,當我嘗試修改列的文本時,出現錯誤:wxChoice :: SetString()索引錯誤

....\src\msw\choice.cpp(348): assert "IsValid(n)" failed in wxChoice::SetString(): invalid item index in wxChoice::SetString

錯誤本身使得它很明顯,物品索引是無效的,但基於我的代碼和(不是很具描述性)documentation,我應該只需要設置列數,然後我會被允許編輯給定索引處的文本。

下面是從我的項目的代碼段:

int phones = Phones->size(); 
choiceDevice->SetColumns(phones); // Value greater than 0 
choiceDevice->SetString(phones - 1, pInstance->ProfileName); // Should assign the last index the value of the ProfileName. 

回答

0

正如Alex所說,我不應該在Windows上使用wxChoice :: SetColumns,因爲它沒有任何影響。我發現我必須使用wxChoice :: Append來代替設置列數,然後設置單個字符串。

0

如果Phones是空的,因而phones == 0

+0

我已經檢查過,並且我已經嘗試設置'choiceDevice-> SetColumns(phones);'到'choiceDevice-> SetColumns(1);'在SetString處有索引0並且仍然沒有骰子。 – Lander

0

wxChoice :: SetColumns

備註:

這僅僅是爲了GTK和Motif實現並沒有做下其他平臺什麼。

它看起來像SetColumns用於多列選擇控制,我從來沒有見過它。無論如何,它不會將新項目添加到控件。在Windows中,它什麼都不做。

+0

非常感謝,注意到這一點。雖然這並不能完全幫助我解決問題,但我會將其作爲答案,因爲我正在做其他的事情,並且*不是問題所在。有時間尋找一些類似的方法或利用Windows上的控件的樣本。 – Lander