使用“this”而不是Form1更改Form form1的属性

时间:2014-02-24 06:25:04

标签: c# winforms properties

在此范围内,

namespace Project1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            //Change Form1 properties here
        }
    }
}

如果通过

更改属性 DoubleBuffered
Project1.Form1.DoubleBuffered = false;

Form1.DoubleBuffered = false;

然后发生错误

  

非静态字段,方法或属性'System.Windows.Forms.Control.DoubleBuffered.get'

需要对象引用

但是,如果通过

进行更改
this.DoubleBuffered = false;

然后错误已解决。我老鼠徘徊 this ,它显示

class Project1.Form1

有人可以解释为什么'this'关键字代表Project1.Form1,但如果我用Project1.Form1或Form1替换'this',我会有错误吗?感谢

1 个答案:

答案 0 :(得分:1)

在您的情况下,this关键字引用Form1的当前实例。明确提及Form1表示您将Form1称为类名。

未声明为static的所有属性都与类的实例相关联,而不是它自己的类。因此,您只能从类实例访问该属性。

这种行为是有道理的,因为你可以拥有多个Form1个实例,每个实例都可以有不同的DoubleBuffered属性值:

var instance1 = new Form1();
var instance2 = new Form1();
instance1.DoubleBuffered = true;
instance2.DoubleBuffered = false;