[英]How to program code to perform an action N seconds after the form is displayed on screen?
我正在編寫一個GUI應用程序以顯示/繪制一系列圖形。 應用程序啟動時,它將自動從指定位置讀取原始數據,並自動繪制圖形並顯示它們。 我添加了在圖形顯示在屏幕上后自動將圖形保存到文件的功能。
我執行保存的方法是將屏幕上的像素捕獲到位圖中並保存位圖:
Bitmap memoryImage = new Bitmap(picCube.Size.Width, picCube.Size.Height);
Graphics g = Graphics.FromImage(memoryImage);
Point plotLoc = picBox.PointToScreen(Point.Empty);
g.CopyFromScreen(plotLoc.X, plotLoc.Y, 0, 0, picBox.Size);
memoryImage.Save(savePath, ImageFormat.Jpeg);
限制是此方法僅在圖形已經顯示在屏幕上之后才起作用。 我有一個菜單項來進行保存,並且它可以正常工作,因為應用程序已經顯示在屏幕上以便進入菜單。 現在,我添加了自動保存功能,僅在表單在屏幕上完全顯示之后,才需要能夠觸發此保存操作。
我目前在窗體的Load事件中放入一個計時器,該事件將在N秒后關閉,從而觸發保存操作。 但是由於某些原因,它不起作用,可能是因為計時器與GUI線程不在同一線程中,這意味着計時器線程無法訪問GUI元素。
有沒有更好的方法來完成此簡單任務,而無需求助於背景工作人員等過於復雜的方法?
表單Load
,表單的Load
並不是最后一次觸發。
也許嘗試System.Windows.Forms.Form.Shown
查看winforms事件的加載順序: Winforms-Load和Activated事件的順序
這樣,您將不必處理依賴本地計算機時間的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.