C# 模仿QQ、MSN訊息提示系列 四、bug修改 效果優化
阿新 • • 發佈:2019-02-16
一、修改內容
1、引用封送類異常提示
出現原因 Point 屬性屬於引用封送類
修改方法:
原來使用 public Point EndPoint; 屬性獲取下一個提示窗口出現的位置於是改為
publicint Y{
get { returnthis.EndPoint.Y; }
}
問題解決
2、每次當多個提示彈出的時候,從第二個開始每個視窗的高度都比背景的高度多2畫素
出現原因:form窗體的Height預設最小值為2
所以得等到窗體移動兩畫素後開始同步窗體的移動位置和大小
if (this.moveCount >2){
}
3、同時顯示多個視窗時cpu佔用大的問題
分析原因:可能是System.windows.Forms.Timer控制元件的問題
於是把控制元件全部換成 System.Threading.Timer
結果:問題沒有解決,並且在多執行緒呼叫窗體時有時會出現異常(機率不大)
繼續等待牛人解決這個問題
二、歸納知識點
做完這個小的Demo可以學到如下知識點:
1、Form窗體的位置操作原理
2、視窗之間的互相呼叫的方法
3、System.Threading.Timer的用法包括 開始,終止
4、非同步執行緒操作視窗內容(需要寫好相關呼叫Delegate並且呼叫相關控制元件的Invoke方法)
三、功能彙總及總體效果圖
1、實現多提示,並能自動根據當前活動窗體判斷下一窗體出現位置
2、滑鼠懸停,當滑鼠在form上面時Form停止運動,離開後繼續當前行為
作者:XuShen8314出處:http://XuShen8314.cnblogs.com
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則視為侵權。