我想在我的 Mainform 上制作一个面板的屏幕截图。此屏幕截图应在用户选择子表单上的某些选项后制作。一开始一切都很好,但现在屏幕截图包含子表单的一部分。
子表单如下打开:
private void Bexport_Click(object sender, EventArgs e) //button
{
ex = new Export();
initexForm();
ex.FormClosed += this.exFormClosed;
ex.TXTfilename.Focus();
ex.ShowDialog(this);
}
制作截图的函数:
void exFormClosed(object sender, EventArgs e)
{
try
{
System.Drawing.Rectangle bounds = Mainpanel.Bounds;
bounds.Width = bounds.Width - 6;
bounds.Height = bounds.Height - 4;
using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(
Mainpanel.PointToScreen(new Point()).X + 3,
Mainpanel.PointToScreen(new Point()).Y + 2, 0,
0, bounds.Size);
}
bitmap.Save(Application.StartupPath + temppic.bmp);
Document doc = new Document();
...
我使用了事件FormClosed
和FormClosing
,结果相似。然后我试图隐藏子窗体,ex.Hide()
但它隐藏了整个程序,这意味着屏幕截图从程序后面显示了桌面。
有人知道如何确保在制作屏幕截图之前关闭子表单吗?
乔纳森