C#的this问题
this是指当前类的实例吗??那么publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}pr...
this是指当前类的实例吗??
那么
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
Graphics ghs = this.CreateGraphics();//换成 f 就绘制不出来了
Brush mybs = new SolidBrush(Color.Red);
Rectangle rt = new Rectangle(10, 10, 100, 100);
ghs.FillRectangle(mybs, rt);
}
}
那行注释 为什么。。 展开
那么
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
Graphics ghs = this.CreateGraphics();//换成 f 就绘制不出来了
Brush mybs = new SolidBrush(Color.Red);
Rectangle rt = new Rectangle(10, 10, 100, 100);
ghs.FillRectangle(mybs, rt);
}
}
那行注释 为什么。。 展开
4个回答
展开全部
this 是指当前的类没错,但是 Form1 f = new Form1() 中的 f 不是你当前的实例了,所以你换成f就不可能画出来了
Form1 f = new Form1();
Graphics ghs = f.CreateGraphics();//换成 f 就绘制不出来了
Brush mybs = new SolidBrush(Color.Red);
Rectangle rt = new Rectangle(10, 10, 100, 100);
ghs.FillRectangle(mybs, rt);
f.Show();// 加这一句就会显示你new出来的窗口,且会有你画的东西在上面的
Form1 f = new Form1();
Graphics ghs = f.CreateGraphics();//换成 f 就绘制不出来了
Brush mybs = new SolidBrush(Color.Red);
Rectangle rt = new Rectangle(10, 10, 100, 100);
ghs.FillRectangle(mybs, rt);
f.Show();// 加这一句就会显示你new出来的窗口,且会有你画的东西在上面的
追问
大意我明白了,加上之后也出现个窗口,再点还有,只是上面没有任何东西。。
追答
那是当然了,因为当前窗口和你new出来的窗口是不一样的,虽然他们是同一个类的实例。你new出来的窗口未添加任何控件当然是也是什么也没有的
展开全部
this的意思是在当前窗体上,而换成f的话就不是在当前窗体,而是你新建的一个窗体,因为你执行了”new Form1()“,虽然两个窗体是构造是一模一样但是内存地址还是不同的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是指当前实例。
换成f就画到f上去了,而不是画到当前实例
换成f就画到f上去了,而不是画到当前实例
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是的,看一下C#、C++等等面向对象的基础书籍,里面都有的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询