如何知道对话框是否完全关闭?
How to know if the dialog box is closed completely?
我有一个以全屏模式打开的父表单 Form1
。 Form1
中有一个按钮可以打开表单 Form2
(使用 .ShowDialog()
方法)。当窗体关闭时,程序捕获 Form1
的屏幕截图。但是在屏幕截图中我仍然可以看到 Form2
在关闭期间仍然有一些不透明度(我正在使用 Microsoft Windows 7 Pro
通过降低表单的不透明度来动画关闭表单)。
那么我如何知道 Form2
何时 100% 关闭,以便我可以截取程序的屏幕截图?
编辑: 我在 Form1
中使用 Graphics.CopyFromScreen Method 来捕获屏幕截图。
并且 Form2
通过在 Form2
中使用 this.Close()
方法单击按钮关闭。
我想出了一个无需等待的简单解决方案。
向 Form2
上的 FormClosing
事件添加一个处理程序,并将其位置设置在屏幕外的某个地方。
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Location = new Point(-4000,-4000);
}
如果有办法确定 Windows 桌面管理器动画已经完成,它不在 .NET 本身中。您必须找到提供此详细信息的本机 API(我不确定是否存在……我不知道是否存在)并通过 p/invoke.[= 执行它15=]
我认为 commenter/answerer dotctor 提供了几个不错的选择:只需延迟足够长的时间来解释动画,或者将有问题的 window 移开关闭(如果您确实重复使用相同的 Form2
实例,请在再次显示之前将其移回)。
也就是说,您也可以考虑使用 Control.DrawToBitmap()
方法进行屏幕截图,因为您似乎希望图像是 Form1
[=26= 的全屏图像].它有一些限制(您可以在文档中阅读),但只要 none 适用于您的情况,它可能是获取所需图像的更方便的方法。
我有一个以全屏模式打开的父表单 Form1
。 Form1
中有一个按钮可以打开表单 Form2
(使用 .ShowDialog()
方法)。当窗体关闭时,程序捕获 Form1
的屏幕截图。但是在屏幕截图中我仍然可以看到 Form2
在关闭期间仍然有一些不透明度(我正在使用 Microsoft Windows 7 Pro
通过降低表单的不透明度来动画关闭表单)。
那么我如何知道 Form2
何时 100% 关闭,以便我可以截取程序的屏幕截图?
编辑: 我在 Form1
中使用 Graphics.CopyFromScreen Method 来捕获屏幕截图。
并且 Form2
通过在 Form2
中使用 this.Close()
方法单击按钮关闭。
我想出了一个无需等待的简单解决方案。
向 Form2
上的 FormClosing
事件添加一个处理程序,并将其位置设置在屏幕外的某个地方。
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.Location = new Point(-4000,-4000);
}
如果有办法确定 Windows 桌面管理器动画已经完成,它不在 .NET 本身中。您必须找到提供此详细信息的本机 API(我不确定是否存在……我不知道是否存在)并通过 p/invoke.[= 执行它15=]
我认为 commenter/answerer dotctor 提供了几个不错的选择:只需延迟足够长的时间来解释动画,或者将有问题的 window 移开关闭(如果您确实重复使用相同的 Form2
实例,请在再次显示之前将其移回)。
也就是说,您也可以考虑使用 Control.DrawToBitmap()
方法进行屏幕截图,因为您似乎希望图像是 Form1
[=26= 的全屏图像].它有一些限制(您可以在文档中阅读),但只要 none 适用于您的情况,它可能是获取所需图像的更方便的方法。