c#传值问题

.Net技术 码拜 9年前 (2016-03-08) 995次浏览
wu38607 于 2016-05-22 22:45:19 编辑

在form2中定义public int a,打开form2的menuStrip的一个按钮,然后显示出form3,在form3中输入数字 form2.a=text.,然后在form2中显示。
就是在form3的值传到form2中去,怎么会不行呢?
怎么传值不了呢?
form2 的程序:
}
public int pointnum;
private void 点位数ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f3 = new Form3;
f3.ShowDialog();
}
form3程序:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.pointnum =int.Parse(PointNtumTextBox.Text);
this.Close();
}

解决方案

10

form2 的程序:
}
public int pointnum;
private void 点位数ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f3 = new Form3;
            f3.Owner = this;
f3.ShowDialog();
}
form3程序:
private void button1_Click(object sender, EventArgs e)
{
//Form2 f2 = new Form2();
   Form2 f2= (Form2 )this.Owner;
f2.pointnum =int.Parse(PointNtumTextBox.Text);
this.Close();
}

10

引用 8 楼 wu38607 的回复:
Quote: 引用 4 楼 gray55455 的回复:

form2 的程序:
}
public int pointnum;
private void 点位数ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f3 = new Form3;
            f3.Owner = this;
f3.ShowDialog();
}
form3程序:
private void button1_Click(object sender, EventArgs e)
{
//Form2 f2 = new Form2();
   Form2 f2= (Form2 )this.Owner;
f2.pointnum =int.Parse(PointNtumTextBox.Text);
this.Close();
}

f3.Owner = this 是说f3的拥有者是f2吗?那 Form2 f2= (Form2 )this.Owner 这句是什么意思呢?

这句的意思是把f3的owner转换成Form2,以便存取f2的变量或调用f2的函数

10

类和对象的关系
Form2 f2 = new Form();效果和int i = 0;是一样的
Form2和int一样是类型
f2和i一样是变量
int i = 2, j = 2;
j = 3;
很显然i还是2
同样的道理你改变另一个Form2的对象是没用的

10

引用 11 楼 wu38607 的回复:
Quote: 引用 9楼johnliuyuan 的回复:
Quote: 引用 8 楼 wu38607 的回复:
Quote: 引用 4 楼 gray55455 的回复:

form2 的程序:
}
public int pointnum;
private void 点位数ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f3 = new Form3;
            f3.Owner = this;
f3.ShowDialog();
}
form3程序:
private void button1_Click(object sender, EventArgs e)
{
//Form2 f2 = new Form2();
   Form2 f2= (Form2 )this.Owner;
f2.pointnum =int.Parse(PointNtumTextBox.Text);
this.Close();
}

f3.Owner = this 是说f3的拥有者是f2吗?那 Form2 f2= (Form2 )this.Owner 这句是什么意思呢?

这句的意思是把f3的owner转换成Form2,以便存取f2的变量或调用f2的函数

这样做的话和原先的做法有什么区别呢?为什么可以传值呢?刚学c#,不大会,谢谢。

你最开始是新建了一个Form2,这样的话你这个新建的Form2和你之前的FORM2是两个不同的form,只不过他们都是Form2这个类而已。而gray55455的回答是把你之前的Form2通过Owner这个变量让Form3也拥有了你之前的Form2,这样你对这个Owner进行的操作便是对你想要操作的Form2进行操作了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c#传值问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)