一提起winform和wpf有啥不同,可能大部分人都會想到wpf擁有漂亮的界面。wpf中也可以使用winform,大部分情況下,都沒有任何問題,極少的情況下,可能會出現問題。
我們就來看一下:
void FloatWindow_Loaded(object sender, RoutedEventArgs e) { this.Topmost = true; this.Left = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width - 300; this.Top = 300; }
這是摘自wpf應用中的一段代碼,這段代碼意圖很明顯,就是在懸浮窗體加載的時候,給它定位。開發和測試的時候,都沒有任何問題。我們主要以PC機為主,進行的測試。筆記本上測試,也是一些幾年前的電腦了。某一天,公司有錢了,配置了一台性能比較好的電腦,同事准備帶上,去給客戶講我們的軟件,不料,安裝上去,卻發現懸浮窗不見了。同事們的第一反應:是筆記本哪兒設置不對。后來,我就去跟蹤了下代碼,包括日志。因為在生成環境或者用戶機器上,你不可能像開發一樣調試。結果發現Left取的值比屏幕分辨率大很多。比如屏幕分辨率是1024*768,獲取的Left結果是接近1024的兩倍了。我不禁驚訝。
后來代碼改成wpf版的:
this.Left=SystemParameters.WorkArea.Width-300;
這樣就解決了問題。為什么會出現這樣問題呢?wpf與硬件有關,或者winform在新設備中有bug?這個問題,也沒有去深究,對生產環境保持敬畏之心是必要的。你寫的代碼,誰知道會運行在什么樣的環境下。