当使用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);
答案 0 :(得分:1)
您使用的是错误的方法。 SetValidator()
设置与对话框本身关联的验证器,该验证器从未使用过。您需要SetTextValidator(),它将验证器与对话框内的文本控件相关联。