2011-01-19 32 views
1

我正嘗試在我的wxWidgets應用程序中創建一個用戶可以在文本框中鍵入內容的情況,並且如果文本框中有一個或多個字符,控件被啓用。因此,我創建了一個事件處理程序,用於檢查事件wxEVT_COMMAND_TEXT_UPDATED上的TextBox-> IsEmpty()。但是,這似乎在文本框中的文本更改發生之前調用。發生更改後有沒有辦法讓事件觸發? 謝謝。在wxWidgets中修改文本之後調用事件處理程序

編輯:我正在使用的代碼。 我正在使用Connect()來設置事件處理,所以沒有事件表來說。這是我使用的代碼:

cur->mTextBox = new wxTextCtrl(mParentFrame, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize); 
mParentFrame->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(iguiFrame::correctTextBoxes)); 

correctTextBoxes是我wxFrame派生類中,它調用只包含下面的代碼的函數的公共方法:

if(cur->mTextBox->IsEmpty()) 
{ 
    wxMessageBox("Empty!"); 
} 

消息框總是彈出「一個字「太晚了。

+0

你的意思是wxTextCtrl :: IsEmpty()? – ravenspoint 2011-01-19 14:56:33

+0

事件在更改後觸發。如上所述,您的代碼應該可以工您將需要發佈實際代碼,以便我們可以查看可能存在的問題。從事件表,事件處理程序和wxTextCtrl構造函數調用開始。 – ravenspoint 2011-01-19 15:02:20

回答

1

正如@ravenspoint提到的那樣,這個事件應該在更改完成後被解僱,但我也想指出,即使在發生事件之前發生改變的情況下,改變幾乎總是通過事件參數傳入您的事件處理程序。

因此,對於這種情況,您可能只想檢查correctTextBoxes()中的event.GetString()的值,以查看在文本控件上設置的新值。

相關問題