如何利用 Owner 属性实现类似查找对话框的效果

.Net技术 码拜 6年前 (2014-12-11) 562次浏览 0个评论

查找对话框总是显示在前面,如果主窗口关闭或者最小化,查找对话框也跟着关闭/隐藏。

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的查找对话框的效果?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何利用 Owner 属性实现类似查找对话框的效果
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!