这是我在Windows窗体应用程序中拥有的子窗口的模型。
当单击父窗口上的按钮时,将显示此信息。
子窗体打开时,焦点位于Text box1中。
当用户使用tabs键离开文本box1或单击任何按钮时,文本Text上的Leave事件将触发。这将触发验证:
if(String.IsNullOrEmpty(textBox1.Text)
{
MessageBox.Show("Please enter a value of Id.");
}
else {
... other logic omitted for brevity
}
现在,用户还可以单击Cancel按钮退出
我想构建一个应用程序来监控所有正在运行的窗口焦点改变事件。我知道WM_KILLFOCUS (0x0008)和WM_SETFOCUS(0x0007),当窗口失去焦点或获得焦点时,消息将被发送。在spy++的帮助下,我得到了如下输出:
<00001> 0005069A S WM_SETFOCUS hwndLoseFocus:(空)
<00002> 0005069A R WM_SETFOCUS
<00003> 0005069A S WM_KILLFOCUS hwndGetFocus:(空)
<00004> 0005069A R WM_KILLFOCUS
在数据表视图中打开父窗体时,在展开父窗体的第一行之前,不能引用子窗体控件的窗体对象。
我想知道一个很好的解决办法。我需要能够请求这类子表单,即使父窗体数据表的第一行尚未展开。
重现问题的步骤:
创建两个表:
CREATE TABLE Parent (
PK Text PRIMARY KEY
);
CREATE TABLE Sub (
PK Text PRIMARY KEY,
FK Text REFERENCES Parent (PK)
);
插入一些数据:
INSERT INTO Parent (PK) VALUES ('A');
INSERT INTO Pare