有谁用过类似于悬浮窗的项目,帮忙指点一下

yth126 2010-06-12 02:31:23
有一个主窗体,在下面,另外还有一个浮动窗体,较小,只占用屏幕不到四分之一的大小。浮动窗体要悬在主窗体的上面,根据主窗体的操作显示不同的内容。在浮动窗体中操作的结果还要再传回给主窗体,这是已经实现了的。

另外没有解决的是,当主窗体最小化或是被别的窗体盖住的时候,浮动的窗体不能再遮住其它的窗体。当主窗体成为活动窗体的时候,浮动窗体还要悬在上面。这个是我的难题百思不能其解,渴盼高手能够赐招。
...全文
113 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whqcx 2012-05-02
  • 打赏
  • 举报
回复
求解求解
dylike 2010-06-13
  • 打赏
  • 举报
回复
这个问题我以前也遇到过,比如制作不影响主线程的动态虚线选择框时就遇到过这个问题.选择框因为效果很眩,不能放在主窗体里,会影响主线程速度,于是用了上浮窗体.后来问题来了.后置窗体点击激活后将覆盖之前的窗体.
后来大概想了一个星期的时间.办法终于想出来并实现了.
我就说下我的思路,可能这种方法并不是最好的,我也只是个菜鸟.
1 使用层特性窗体(UpdateLayeredWindow)来制作透明的选择框
2 由于在点击主窗体时将前置而覆盖1窗体,故在激活主窗体时设置窗体1.TopMost=True
3 重点:前置窗体置顶,不受主窗体影响,但鼠标将无法操作主窗体.要实现这步,于是我做了第4步
4 给置顶窗体做了鼠标穿透,使其不影响鼠标操作,只负责显示需要的内容,直接将鼠标消息作用在主窗体上.
5 为避免因主窗体失去焦点但置顶窗体仍置顶而影响其他窗口操作,在主窗体失去焦点事件中取消窗体1.TopMost=False
这样就很好的解决了问题.不知道这个方法是否适用于你,就参考一下吧.
因为代码比较多,我又只会VB.NET楼主如果需要的话留下邮箱.我发给你.
yth126 2010-06-13
  • 打赏
  • 举报
回复
按照6楼的方法已经实现了我的功能
weiaizoutianya11 2010-06-13
  • 打赏
  • 举报
回复
例如有个Form1和Form2两个窗体,Form1作为主要窗体,Form2作为悬浮窗体。
可以在Form2中这样写:
this.Owner = (Form1)Application.OpenForms["Form1"];
在Form1中写Form2 frm2=new Form2(); frm2.show();
宇峰科技 2010-06-12
  • 打赏
  • 举报
回复
将浮动窗体的owner属性设置为主窗体
xz_lm_fly 2010-06-12
  • 打赏
  • 举报
回复
把子窗体的Owner设置成主窗体即可。
vpoint2009 2010-06-12
  • 打赏
  • 举报
回复
主窗体最小化的时候悬浮窗体也跟着最小化不就行了,加个timer~~
mngzilin 2010-06-12
  • 打赏
  • 举报
回复
没怎么明白,看看这个是不是
http://blog.csdn.net/mngzilin/archive/2010/05/01/5549119.aspx

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧