为什么“this"工作,但"Form.Activeform"抛出NullRefernceE
本文关键字:quot Form Activeform NullRefernceE 抛出 工作 this 为什么 | 更新日期: 2023-09-27 18:04:57
如果这个关键字指的是在程序类(Application)中实例化的类的当前实例。Run(new Form1()))
我们可以使用关键字
访问它的属性 this .Text = "debuggging";
this .Opacity = 54;
this .ShowIcon = true;
this .Size = new Size(100, 100);
为什么我不能用Form1.ActiveForm到达它。 * (所有属性)
只是出于好奇,但为什么
当像这样编码
Form1.ActiveForm.Text = "debugla";
Form1.ActiveForm.Opacity = 54;
Form1.ActiveForm.ShowIcon = true;
Form1.ActiveForm.Size = new Size(100, 100);
和activeform必须提供当前使用的activeform
为什么会抛出nullreference异常
MSDN: Form.ActiveForm
: "表示当前活动表单的表单,如果没有活动表单,则为null。"
所以可能是因为您正在调试表单不是活动的(没有焦点),因此它返回null
。
ActiveForm返回活动表单…这意味着如果你的窗口没有焦点,那么它就不是活动的。因此,以这种方式使用它,将极大地冒着程序产生错误的风险。
使用this
确保您正在访问您打算更改的表单
你还应该注意到ActiveForm
是一个静态属性,因此它没有任何链接到你正在使用它的形式,如果你在你的应用程序中打开任何其他窗口,那么你的更改可以应用到这些其他对话框
你可以这样做:
Form currentForm = Form.ActiveForm;
if(currentForm != null)
{
//use currentForm properties
}
Form.ActiveForm
. gets the currently active form for this application
.
而this
是指Form1
的当前实例