-2

我正在尝试将我的表单置于顶部,截取屏幕截图,保存它,然后使用以下代码将其最小化。

            this.WindowState = FormWindowState.Maximized;
            this.FormBorderStyle = FormBorderStyle.None;
            this.TopMost = true;

            Application.DoEvents();

            string keys = "%" + "{PrtSc}";
            SendKeys.SendWait(keys);
            Clipboard.GetImage().Save(imagePath, ImageFormat.Jpeg);

            this.FormBorderStyle = FormBorderStyle.Sizable;
            this.WindowState = FormWindowState.Minimized;
            this.TopMost = false;

我认为代码将始终将窗口置于顶部并截取屏幕截图。但是我注意到它不是 100% 工作的:机器太慢了,所以当将窗口置于顶部的代码执行时,整个窗口都不会出现。有时它不会把它带到顶部,所以图片包含一些用户活动。

我怎样才能将它完全带到顶部并等待它完成,然后截取屏幕截图并反转它。

请注意,申请中只有一个表格。

4

1 回答 1

0

也许添加一个计时器。运行代码的第一部分(直到并包括:“Application.DoEvents();”),然后启动计时器。在刻度代码上检查“this.TopMost”状态,只有当它是最顶层的表单时才进行屏幕截图并停止计时器。

于 2013-03-11T14:08:50.900 回答