如果此关键字引用类的当前实例作为程序类中的实例(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必须为我们带来当前使用的活动表格
它抛出nullreference异常为什么?
答案 0 :(得分:5)
MSDN: Form.ActiveForm
:“表示当前有效表单的表单,如果没有活动表单,则为 null 。”
因此,可能是因为您正在调试表单未激活(没有焦点),因此它返回null
。
答案 1 :(得分:4)
ActiveForm返回活动表单...这意味着如果您的窗口没有焦点,那么它就不会处于活动状态。因此,通过这种方式使用它会大大降低程序产生错误的风险。
使用this
可确保您访问要更改的表单
您还应该注意ActiveForm
是一个静态属性,因此如果您的应用程序中打开了任何其他窗口,则它与您使用它的表单没有任何关联,那么您的更改可能适用于其他对话框
答案 2 :(得分:0)
你可以这样做:
Form currentForm = Form.ActiveForm;
if(currentForm != null)
{
//use currentForm properties
}
Form.ActiveForm
gets the currently active form for this application
而this
指的是Form1
的当前实例。