由于评论,我添加了以下代码
(在基本面板中)
Connect(CTRL_ONE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_TWO,wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_THREE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_FOUR, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
Connect(CTRL_FIVE, wxEVT_KILL_FOCUS, (wxObjectEventFunction)&BasicPanel::OnKillFocus);
(枚举)
CTRL_NAME = wxID_HIGHEST + 5, // 6004
CTRL_ADDRESS = wxID_HIGHEST + 6, // 6005
CTRL_PHONENUMBER = wxID_HIGHEST + 7, // 6006
CTRL_SS = wxID_HIGHEST + 8, // 6007
CTRL_EMPNUMBER = wxID_HIGHEST + 9 // 6008
(OnKillFocus 函数 - 按照建议包含声明)
void BasicPanel::OnKillFocus(wxFocusEvent& event) {
switch (event.GetId()) {
case 6004:
...
break;
... ... ...
}
当用户将焦点转移到他们正在使用的文本框上时,添加到代码中的所有这些都不起作用......
Q1:我正在使用 wxWidgets (C++) 并且遇到了一个我找不到任何帮助的问题。我创建了几个wxTextCtrl
框,并希望程序在用户“取消焦点”时更新其中的简单计算。我在 wxWidgets 网页上找不到关于这个主题的任何文档,谷歌搜索它只找到了 wxPython。我发现的两个事件是:EVT_COMMAND_KILL_FOCUS - EVT_KILL_FOCUS
对于这两个事件我都找不到任何片段。谁能给我一个简短的例子或引导我到一个有用的页面?
wxTextCtrl
Q2:我是否必须创建一个事件来处理我的 8 个盒子
中的每一个被杀死的焦点?如果我必须创建一个不同的事件:我如何让每个事件彼此区分开来?我知道我必须为每个wxTextCtrl
盒子创建新的 wxID,但我如何才能触发正确的 wxID?
class BasicPanel : public wxPanel { ...
wxTextCtrl* one;
wxTextCtrl* two;
wxTextCtrl* three;
wxTextCtrl* four; ... }