与wxTextEntryDialog一起使用时,wxTextValidator失败

时间:2013-10-28 09:04:29

标签: wxwidgets

当使用wxTextValidator和wxTextEntryDialog时,我遇到了一个问题,当使用wxWidgets 2.9.5时

简而言之,wxTextValidator似乎没有效果。用户可以在wxTextEntryDialog中输入任何内容。

// setup validator
wxString ipAddressFilter[11] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."}; // authorized characters for IP Address
wxArrayString arraystrIPAddress(11, ipAddressFilter);
wxTextValidator txtvldIPAddress(wxFILTER_INCLUDE_CHAR_LIST); // text validator for IP Address
txtvldIPAddress.SetIncludes(arraystrIPAddress); // sets authorized characters for IP Address

// get ip from user
wxString ip;
auto dialog = new wxTextEntryDialog( this, _("Call button pressed"), _("enter ip"), ip);
dialog->SetValidator(txtvldIPAddress);
dialog->ShowModal();
ip = dialog->GetValue();
wxMessageBox( _("button call pressed."), ip , wxOK|wxICON_INFORMATION, this );

请注意wxTextCtrl按预期使用wxTextValidator:

txtctrlIPAddress = new wxTextCtrl(this, -1, wxEmptyString, wxPoint(0, 5), wxSize(300, 30), wxTE_CENTRE, txtvldIPAddress);

1 个答案:

答案 0 :(得分:1)

您使用的是错误的方法。 SetValidator()设置与对话框本身关联的验证器,该验证器从未使用过。您需要SetTextValidator(),它将验证器与对话框内的文本控件相关联。