繁体   English   中英

调用wxListCtrl :: EditLabel(index)时无法捕获EVT_LIST_BEGIN_LABEL_EDIT事件

[英]Can't catch EVT_LIST_BEGIN_LABEL_EDIT event when calling wxListCtrl::EditLabel (index)

我想重命名wxListCtrl中的选定列表项。 我一直在跟踪wxwidgets附带的示例listctrl的示例,但是它似乎在我的代码中不起作用。

该示例具有这段代码,用于调用更改项目标签的代码:

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)

我可能会错过一些非常琐碎的内容,但似乎无法弄清楚。 有任何想法吗?

干杯,维利乌斯

创建wxListCtrl的实例时必须添加wxLC_EDIT_LABELS样式以启用标签的编辑,这些标签反过来会触发事件EVT_LIST_BEGIN_LABEL_EDIT和EVT_LIST_END_LABEL_EDIT。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM