查找对话框总是显示在前面,如果主窗口关闭或者最小化,查找对话框也跟着关闭/隐藏。
msdn上说:利用owner属性可以实现这个效果,就是把子窗体的owner属性设置为主窗体,那么子窗体就总是显示在主窗体的前面,而且主窗体最小化的时候,子窗体也最小化。
我测试了一下,遇到两个问题:
1 如果主窗体是 另一个窗体的mdichild,主窗体最小化的时候,子窗体就不跟着最小化了,举例说:
frm2的MdiParent指向frm1, 而frm3的 Owner指向frm2, 那么当frm2最小化的时候,frm3还在那里显示。
2 子窗体显示后,如果再弹出一个模式对话框,那么子窗体就无法响应键盘鼠标了,这跟windows自带的notepad.exe的查找对话框的表现不同。 具体来说:
运行notepad.exe ,随便输入几个字符,然后按 Ctrl-F 调出 查找对话框,然后点击菜单的 帮助–关于,调出关于对话框,此时你仍然可以操作查找对话框,比如关闭查找对话框,是 可以的。
但是我的 frm1是主窗体,frm2是子窗体, frm2.Owner=frm1; frm2.Show(); 在frm2显示后, 我点击frm1的菜单项,显示关于对话框(利用 ShowDialg显示的模式对话框),在显示关于对话框之后,frm2就无法被操作了,当然也无法关闭frm2,只有把关于对话框关闭之后,才可以操作frm2。
请教:是我的做法有误,还是Owner就只能实现这个效果?
如果是我的做法有误,该怎么做?
如果 owner 就是这个效果,该如何完全模仿notepad.exe的查找对话框的效果?