Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#位图活动窗体>;对象引用未设置为对象的实例_C#_Bitmap - Fatal编程技术网

C#位图活动窗体>;对象引用未设置为对象的实例

C#位图活动窗体>;对象引用未设置为对象的实例,c#,bitmap,C#,Bitmap,几天以来,我一直在努力解决我的活动表单截图函数中的错误 对象引用未设置为对象的实例 我的问题:在运行我的exe几个小时后,出现了错误(重新启动,它工作时没有错误) 该函数的作用:打开表单,初始化新图表,填写表单,截图表单并保存截图 代码> var frm = Form3.ActiveForm; await Task.Delay(2000); using (var bmp = new Bitmap(fr

几天以来,我一直在努力解决我的活动表单截图函数中的错误

对象引用未设置为对象的实例

我的问题:在运行我的exe几个小时后,出现了错误(重新启动,它工作时没有错误)

该函数的作用:打开表单,初始化新图表,填写表单,截图表单并保存截图

代码>

                var frm = Form3.ActiveForm;
                await Task.Delay(2000);
                using (var bmp = new Bitmap(frm.Width, frm.Height))
                {
                    frm.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
                    bmp.Save("TestX.png");
                }
其他代码,但无法解决错误

        WindowState = FormWindowState.Maximized;
        FormBorderStyle = FormBorderStyle.None;
        Bounds = Screen.PrimaryScreen.Bounds;
        BringToFront();
错误在这里>(frm.Width,frm.Height)因为表单不在我所有其他应用程序的前面,并且没有宽度/高度,我想。。。如果我重新启动exe,错误就被解决了,我的表单再次出现在所有其他应用程序面前,几个小时后我又出现了问题


是否有一些技巧可以解决它/或者表单不能放在所有人前面?

这是因为,在某个时候,应用程序不再具有活动表单,并且
Form3.ActiveForm
属性返回
null
,而不是表单对象。看

我建议您不要使用
.ActiveForm
,而是做一些其他事情来确定当前表单(我怀疑它必须是活动的)-如果此代码是表单codebehind的一部分,那么即使
也可以工作

using (var bmp = new Bitmap(this.Width, this.Height))
如果代码不在表单codebehind中,则可以将表单实例传递给创建屏幕截图的任何帮助器类

ScreenshotHelper sh = new ScreenshotHelper(this); // assuming you create the helper as part of your form codebehind

很好的回答,我可以接受:)谢谢你,看起来它现在起作用了:)