2011-11-24 48 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