//ctor
test=new wxString[n];
starr=new wxStaticText *[n];
tcarr=new wxTextCtrl *[n];
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL);
wxStaticBox *st = new wxStaticBox(this, -1, wxT("test"),wxPoint(5, 5), wxSize(240, 150));
for(int i=0;i<n;i++){
starr[i] = new wxStaticText(this,-1,wxString::Format(wxT("test %i:"),i+1),wxPoint(20, 20+(i+1)*20));
tcarr[i] = new wxTextCtrl(this, 32000+i, wxT(""),wxPoint(95, 20+(i+1)*20),wxDefaultSize,0,wxTextValidator(wxFILTER_NUMERIC,&test[i]));
vbox->Add(starr[i],1);
vbox->Add(tcarr[i],1);
}
wxButton *okButton = new wxButton(this, wxID_OK, wxT("Save"),
wxDefaultPosition, wxSize(70, 30));
hbox->Add(okButton, 1);
vbox->Add(hbox, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, 10);
SetSizer(vbox);
Centre();
//header
private:
wxString *test;
wxStaticText **starr;
wxTextCtrl **tcarr;
wxTextValidation不会将数据从wxTextCtrl复制到wxString变量:
当我单击wxID_OK按钮并检查test [0..n]上的值时,我在每个中都得到空的wxString,有什么问题? 感谢。
答案 0 :(得分:0)
默认情况下,当控件本身被“解散”时,wxValidator仅在关联的wxString中复制控件的内容(不知道这是否意味着被破坏或者是什么)。如果要在按下确定按钮后立即复制它,则必须明确地执行此操作。尝试插入此内容:
for (int i=0;i<n;i++) {
tcarr[i]->GetValidator()->TransferFromWindow();
wxMessageBox(test[i]); // just for debug
}
它对我来说很好(TDM-GCC-64上的wxWidgets 3.0.2)。