一、修改内容
1、引用封送类异常提示
出现原因 Point 属性属于引用封送类
修改方法:
原来使用 public Point EndPoint; 属性获取下一个提示窗口出现的位置于是改为
public
int
Y
{
get { return this .EndPoint.Y; }
}
{
get { return this .EndPoint.Y; }
}
问题解决
2、每次当多个提示弹出的时候,从第二个开始每个窗口的高度都比背景的高度多2像素
出现原因:form窗体的Height默认最小值为2
所以得等到窗体移动两像素后开始同步窗体的移动位置和大小
if
(
this
.moveCount
>
2
)
{
this .Height ++ ;
}
{
this .Height ++ ;
}
3、同时显示多个窗口时cpu占用大的问题
分析原因:可能是System.windows.Forms.Timer控件的问题
于是把控件全部换成 System.Threading.Timer
结果:问题没有解决,并且在多线程调用窗体时有时会出现异常(几率不大)
继续等待牛人解决这个问题
二、归纳知识点
做完这个小的Demo可以学到如下知识点:
1、Form窗体的位置操作原理
2、窗口之间的互相调用的方法
3、System.Threading.Timer的用法包括 开始,终止
4、异步线程操作窗口内容(需要写好相关调用Delegate并且调用相关控件的Invoke方法)
三、功能汇总及总体效果图
1、实现多提示,并能自动根据当前活动窗体判断下一窗体出现位置
2、鼠标悬停,当鼠标在form上面时Form停止运动,离开后继续当前行为
下载地址:WindowsMoveDemo2008-07-30.rar
作者:
徐沈
出处: http://XuShen8314.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
出处: http://XuShen8314.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。