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).我是个新手,请问问题出在哪里?谢谢。。 展开
 我来答
_神__仙_
2011-11-27 · TA获得超过1257个赞
知道小有建树答主
回答量:806
采纳率:0%
帮助的人:530万
展开全部
因为c1 c2 c3的访问修饰符是private的(不写默认是private),所以不能被调用到
注意,修改完访问修饰符后,他们虽然能被调用到了,但由于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的值
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d242235
推荐于2016-04-07 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:822万
展开全部
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;
}
}
如果这么写还能出问题,那太阳可能真的从西边出来了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乾又蓝0d0q6
2011-11-28 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:79.3万
展开全部
form1 kk = new form1(),创建了一个新的对象,对象里的变量如果没有初始化都是空值。
Test(kk);
public class Form2
{
private void Test(Form1 f)
{
char cc1 = f.C1;
char cc2 = f.C2;
}
}
这样才是调用原来的对象的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
农民维少
2011-11-27
知道答主
回答量:19
采纳率:0%
帮助的人:10.8万
展开全部
用PUBLIC 将form1里面的设置成public static char C1,C2,C3 那边NEW了 from1你就可以用了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyangbdwk
2011-11-28 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4394万
展开全部
form1 kk =new form()
这里你应该写成new form1()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式