为什么"this"有效,但"Form.Activeform"会抛出NullRefernceException?

Ufu*_*MEN 0 c#

如果此关键字引用类的当前实例作为程序类中的实例(Application.Run(new Form1()))

我们可以使用此关键字来访问它的属性

        this .Text = "debuggging";
        this .Opacity = 54;
        this .ShowIcon = true;
        this .Size = new Size(100, 100);
Run Code Online (Sandbox Code Playgroud)

为什么不能用Form1.ActiveForm达到它.*(所有房产)

只是出于好奇,但为什么

当像这样编码

        Form1.ActiveForm.Text = "debugla";
        Form1.ActiveForm.Opacity = 54;
        Form1.ActiveForm.ShowIcon = true;
        Form1.ActiveForm.Size = new Size(100, 100);
Run Code Online (Sandbox Code Playgroud)

和activeform必须为我们带来当前使用的活动表单

抛出null引用异常为什么?

Say*_*yse 5

ActiveForm返回活动窗体...这意味着如果您的窗口没有焦点,则它不是活动的。因此,以这种方式使用它会极大地冒着程序产生错误的风险。

使用this确保您正在访问您打算更改的表单

您还应该注意,这ActiveForm是一个静态属性,因此如果您在应用程序中打开了任何其他窗口,那么它与您正在使用它的表单没有任何链接,那么您的更改可以应用于这些其他对话框


Tim*_*ter 5

MSDN: Form.ActiveForm:"代表当前活动窗体形式,或返回null如果没有活性的形式."

所以也许是因为你正在调试表单不活动(没有焦点),因此它返回null.