1

我有一个带有很多选项卡的控制系统。它们每个都有许多按钮和文本控件。我想要一个事件处理程序来执行相同的代码,但对不同的文本控件执行。

例如,10 个文本控件具有 IP 值。我想使用相同的事件处理函数而不是 10 个事件和 10 个处理程序,但它们需要指向每个事件生成对象:

void anyname::OnCheckIP(wxCommandEvent& event)
{
   // code to check IP value for the caller text control
}

我怎样才能做到这一点?¿ 甚至可以在事件处理程序中恢复调用者对象指针吗?

4

1 回答 1

2

您可以对正在使用的控件进行子类化,捕获生成的事件,并调用方法来处理新类中的事件。然后,您将这个新控件用于需要相同处理程序的所有小部件。

假设你有很多 wxTextCtrls

class cMyCommonTextCtrl : public wxTextCtrl
{
   int myID;
public:
    cMyCommonTextCtrl( int ID, ... )
    : wxTextCtrl( ... ),
    , myID( ID )
    ...
  {
    bind(  wxEVT_TEXT_ENTER, &cMyCommonTextCtrl::OnCheckIP, this, myID );
    ...
  }
    void OnCheckIP( wxCommandEvent& )
    {
        // handle text, using myID attribute to distinguish which one
    }
};
于 2012-03-01T15:53:23.513 回答