我有一个wxListBox,它的构造如下:
wxString choices[8] = {"0", "1", "2", "3", "4", "5", "6", "7" };
m_listboxSorted = new wxListBox( panelOne, ListBoxOneID,wxPoint(40,250), wxSize(260,125), 8, choices, wxLB_SINGLE|wxLB_HSCROLL, wxDefaultValidator );
这种初始化为列表中的8个预定义条目腾出了空间。但是添加任何多余的(9th ...)都会导致崩溃。
如果我希望使用这8个预定义的条目来初始化列表,但又有可能添加第9位,第10位...,那么该如何纠正该代码呢?
编辑:一些额外的代码,希望可以帮助发现问题
static unsigned int k = 0 ;
m_listboxSorted->SetString(k, "some text");
k++;
此代码是处理程序功能的一部分,该功能(单击按钮时)进行一些处理,并且还会在列表框中添加一个条目。除了构造函数:
wxListBox *m_listboxSorted = new wxListBox;
那就是我看到的所有与列表框有关的代码。
最佳答案
您不能使用SetString()
将字符串添加到列表框中,只能将其用于修改现有字符串(考虑一下:SetString(10, "whatever")
对一个空列表框会做什么,第一个显示第11行中的字符串"whatever"
之前有10个项目?)。
您应该改为使用Append()
。这也使您无需手动跟踪索引(当然,始终可以使用GetCount()
从列表框本身获取索引)。