【发布时间】:2011-06-11 12:38:35
【问题描述】:
我试图在我的 wxWidgets 应用程序中创建一种情况,用户可以在文本框中输入内容,如果文本框中有一个或多个字符,则启用其他控件。因此,我创建了一个事件处理程序来检查事件 wxEVT_COMMAND_TEXT_UPDATED 上的 TextBox->IsEmpty()。但是,这似乎是在文本框中的文本发生更改之前调用的。有没有办法在更改发生后触发事件? 谢谢。
编辑:我正在使用的代码。 我使用 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!");
}
消息框总是来不及弹出“一个字符”。
【问题讨论】:
-
你的意思是 wxTextCtrl::IsEmpty() 吗?
-
该事件在更改后触发。如上所述,您的代码应该可以工作。您需要发布实际代码,以便我们查看可能出现的问题。从事件表、事件处理程序和 wxTextCtrl 构造函数调用开始。
-
谢谢。是的,抱歉,我的意思是 wxTextCtrl::IsEmpty(),但我的 wxTextCtrl 的名称是 TextBox。