only .Net技术

coding by c# only...................
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 模仿QQ、MSN消息提示系列 四、bug修改 效果优化

Posted on 2008-07-30 11:57  秦奋  阅读(1986)  评论(7编辑  收藏  举报

 

C# 模仿QQ、MSN消息提示系列 一、基本原理

C# 模仿QQ、MSN消息提示系列 二、基本效果模仿包含代码

C# 模仿QQ、MSN消息提示系列 三、实现多个提示效果

C# 模仿QQ、MSN消息提示系列 四、bug修改 效果优化

C# 模仿QQ、MSN消息提示系列 五、改进 只使用两个时间控件

 

  

一、修改内容

1、引用封送类异常提示

出现原因 Point 属性属于引用封送类

修改方法:

原来使用 public Point EndPoint; 属性获取下一个提示窗口出现的位置于是改为

 

public int Y
        {
            
get { return this.EndPoint.Y; }
        }

 

问题解决

 

2、每次当多个提示弹出的时候,从第二个开始每个窗口的高度都比背景的高度多2像素

出现原因:form窗体的Height默认最小值为2

所以得等到窗体移动两像素后开始同步窗体的移动位置和大小

 

if (this.moveCount > 2)
{
   
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