我想重命名wxListCtrl中的選定列表項。我一直在使用wxwidgets提供的示例listctrl的例子,但它似乎並沒有在我的代碼中工作。調用wxListCtrl :: EditLabel(index)時無法捕獲EVT_LIST_BEGIN_LABEL_EDIT事件
該樣品具有這段代碼調用改變項目的標籤:
void MyFrame::OnEdit(wxCommandEvent& WXUNUSED(event))
{
// demonstrate cancelling editing: this currently is wxMSW-only
#ifdef __WXMSW__
if (m_listCtrl->GetEditControl())
{
m_listCtrl->EndEditLabel(true);
}
else // start editing
#endif // __WXMSW__
{
long itemCur = m_listCtrl->GetNextItem(-1, wxLIST_NEXT_ALL,
wxLIST_STATE_FOCUSED);
if (itemCur != -1)
{
m_listCtrl->EditLabel(itemCur);
}
else
{
m_logWindow->WriteText(wxT("No item to edit"));
}
}
}
而我看起來是這樣的:
void GUI::OnRename (wxCommandEvent &WXUNUSED (event))
{
wxListCtrl *list ((wxListCtrl*) this -> FindWindowById (ID_LIST));
int index = list -> GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
if (list -> GetEditControl())
list->EndEditLabel(true);
else if (index != -1)
{
list -> EditLabel (index);
}
}
這兩段代碼都調用EditLabel函數,其中用於編輯標籤的事件(wxEVT_LIST_BEGIN _LABEL_EDIT)應該被觸發,但是當代碼中的代碼被觸發時,我的代碼中的綁定方法不會被觸發。
我在事件表中的相同的方式結合的方法在樣品中: EVT_LIST_BEGIN_LABEL_EDIT(ID_LIST,GUI :: OnEditListLabel)
樣品:EVT_LIST_BEGIN_LABEL_EDIT(LIST_CTRL,MyListCtrl :: OnBeginLabelEdit)
我大概錯過了一些非常微不足道的事情,但似乎無法弄清楚。有任何想法嗎?
乾杯, Vilius