如何清除wxListBox中的所有选择(使用wxLB_MULTIPLE)?

时间:2012-02-10 12:51:50

标签: c++ listbox selection wxwidgets

如何清除样式为wxLB_MULTIPLE的wxListBox中的所有选择?

wxControlWithItems::SetSelection()wxControlWIthItems::SetStringSelection()都不起作用。 他们只选择传递的项目,但他们不会取消选择文档中所述的任何其他项目:

  

请注意,这不会导致发出任何命令事件   它是否取消选择支持的控件中的任何其他项目   多项选择。

3 个答案:

答案 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系统的ListBox_SetSel宏

您可以使用Windows API中的宏ListBox_SetSel

对于此功能,您当然必须包含Windowsx.hwx/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(); 这个方法对我有用