簡體   English   中英

在窗體顯示在屏幕上N秒后,如何編程代碼以執行操作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM