天天看點

C#在截屏時将截屏之前需要隐藏的控件也截入

最近我在項目中遇到一個讓我十分頭疼的問題,就是我在截屏時也将截屏之前隐藏的控件也截入了。

情況:我在Winform窗體有個截屏功能按鈕,實作在調用WPF全屏後截屏,但在截屏WPF界面前将界面裡的一個Label标簽提示語隐藏掉。這個讓我感到十分的奇怪的是,我隐藏的代碼明明寫在截屏代碼之前,按照同步線程,

在執行完隐藏控件代碼之後才進入截屏代碼的,而且我用MessageBox彈框測試了下,确認在截屏之前控件是隐藏的。

方法一:

我谷歌搜尋分析了很久,發現可能是隐藏控件需要一定的時間,截圖前調用了hide,但hide尚未完成時就截了圖了。後來加入了線程Sleep,但是還是不行,發現因為sleep阻塞的是hide所在的線程,是以我就起個線程hide,這樣就可以截屏了。

方法二:

将隐藏控件放入截屏功能按鈕MouseEnter事件裡,這樣就在點選事件之前就将控件隐藏了。如果想顯示控件不想截屏,也可以在MouseLeave事件裡顯示該控件即可。