如何清除样式为wxLB_MULTIPLE
的wxListBox中的所有选择?
wxControlWithItems::SetSelection()和wxControlWIthItems::SetStringSelection()都不起作用。 他们只选择传递的项目,但他们不会取消选择文档中所述的任何其他项目:
请注意,这不会导致发出任何命令事件 它是否取消选择支持的控件中的任何其他项目 多项选择。
答案 0 :(得分:1)
我会使用wxListBox::GetSelections 后跟wxListBox::Deselect,因为没有取消选择所有方法。
答案 1 :(得分:0)
正如SteveL所说,你必须在循环中使用wxListBox::GetSelections()
和wxListBox::Deselect()
:
wxArrayInt selections;
int count = m_listBox->GetSelections(selections);
for ( int i=0; i<count; i++ )
{
m_listBox->Deselect(selections[i]);
}
您可以使用Windows API中的宏ListBox_SetSel。
对于此功能,您当然必须包含Windowsx.h
和wx/msw/winundef.h
:
#include <Windowsx.h>
#include <wx/msw/winundef.h>
// ...
HWND hListBox = (HWND)m_listBox->GetHandle();
ListBox_SetSel(hListBox, false, -1);
答案 2 :(得分:0)
m_listBox->Clear(); 这个方法对我有用