为什么“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异常

为什么“this"工作,但"Form.Activeform"抛出NullRefernceE

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的当前实例