2012-08-04 31 views
0

我想重命名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

回答

0

有創建wxListCtrl的實例時,使作爲回報觸發事件EVT_LIST_BEGIN_LABEL_EDIT和EVT_LIST_END_LABEL_EDIT標籤的編輯添加wxLC_EDIT_LABELS風格。