c# 不同窗体之间变量的调用
form1中有三个变量char类型的C1,C2,C3,form2中要调用到form1的那三个变量。我已经设置成:publiccharC1,C2,C3了,form2中也fo...
form1中有三个变量char类型的C1,C2,C3,form2中要调用到form1的那三个变量。我已经设置成:public char C1,C2,C3了,form2中也form1 kk =new form();kk.C1(kk后一点没有出现C1,C2,C3的选择,找打上去也提示无法找到C1,C2,C3).我是个新手,请问问题出在哪里?谢谢。。
展开
6个回答
展开全部
因为c1 c2 c3的访问修饰符是private的(不写默认是private),所以不能被调用到
注意,修改完访问修饰符后,他们虽然能被调用到了,但由于form1是被new出来的而不是传过来的,form1中的c1和form2中的form1对象中的c1值可能不一样
如果要一样的话:1 传form1对象给form2
2 将c1 c2 c3设置为静态
注意,修改完访问修饰符后,他们虽然能被调用到了,但由于form1是被new出来的而不是传过来的,form1中的c1和form2中的form1对象中的c1值可能不一样
如果要一样的话:1 传form1对象给form2
2 将c1 c2 c3设置为静态
追问
就是在form1中我的C1,C2,C3要怎么定义??谢谢回答
追答
如果form1和form2在相同命名空间下
form1中定义
internal char c1;
internal char c2;
internal char c3;
如果不在相同命名空间
form1 定义
public char c1;
public char c2;
public char c3;
这样可以通过new form1().c1来调用form1中c1的属性
但是如果form1中c1值在form1操作中改变了,new form1().c1则是初始值而不是改变后的值
这时如果想取改变后的值,需要在form2的构造中传入form1
如:public form2(form1 f1)
{
//这里的f1.c1是form1操作后c1的值
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class Form1
{
public char C1;
public char C2;
public char C3;
}
public class Form2
{
private void Test()
{
Form1 f = new Form1();
char cc1 = f.C1;
char cc2 = f.C2;
}
}
如果这么写还能出问题,那太阳可能真的从西边出来了。
{
public char C1;
public char C2;
public char C3;
}
public class Form2
{
private void Test()
{
Form1 f = new Form1();
char cc1 = f.C1;
char cc2 = f.C2;
}
}
如果这么写还能出问题,那太阳可能真的从西边出来了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form1 kk = new form1(),创建了一个新的对象,对象里的变量如果没有初始化都是空值。
Test(kk);
public class Form2
{
private void Test(Form1 f)
{
char cc1 = f.C1;
char cc2 = f.C2;
}
}
这样才是调用原来的对象的值
Test(kk);
public class Form2
{
private void Test(Form1 f)
{
char cc1 = f.C1;
char cc2 = f.C2;
}
}
这样才是调用原来的对象的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用PUBLIC 将form1里面的设置成public static char C1,C2,C3 那边NEW了 from1你就可以用了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form1 kk =new form()
这里你应该写成new form1()
这里你应该写成new form1()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询