C# 模仿QQ、MSN消息提示系列 二、基本效果模仿包含代碼
C# 模仿QQ、MSN消息提示系列 四、bug修改 效果優化
一、修改內容
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
作者:XuShen8314
出處:http://XuShen8314.cnblogs.com
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則視爲侵權。
出處:http://XuShen8314.cnblogs.com
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則視爲侵權。