C#中 如何跨窗体传值 例题: 将form2中 checkBox的状态 在form1中反映出来 感觉c这个变量根本不管用
Form1中的值:privatevoidForm1_Load(objectsender,EventArgse){Form2f2=newForm2();if(f2.c!="...
Form1中的值:
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
if (f2.c != "")
{
MessageBox.Show(c.toString());
}
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
Form2中的值:
public string c ="";
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
c = "checkBox1.Text";
}
} 展开
private void Form1_Load(object sender, EventArgs e)
{
Form2 f2 = new Form2();
if (f2.c != "")
{
MessageBox.Show(c.toString());
}
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
Form2中的值:
public string c ="";
private void button1_Click(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
c = "checkBox1.Text";
}
} 展开
8个回答
展开全部
不是c这个变量不管用, 你要先明白为什么在你的 Form1_Load 里 f2.c 的值总是为空字符串.
你打开一个Form2 然后设置了checkBox1, c的值变了, 可是这并不会影响到你在 Form1_Load 里那个 f2.c, 因为这个 Form2 f2 = new Form2() 里的 f2 是一个新的单独的 Form2, 跟你改变了 checkBox1 的那个 Form2 不是同一个实例.
面向对象的概念, 你应该是还没懂.
会调试不? 如果会的话, 在 public string c = ""; 这句上打个断点, 然后运行程序(或者直接 F11 单步调试), 好好看看一步步到底都做了什么, 你会明白的.
要达到你如题所述的要求, 最简单的实现方式是, public string c = ""; 修改为 public static string c = ""; 用静态变量, 这个不解释了, 自己看书吧.
这种方法简单, 你可以先这么用, 但等你学习深入了, 就不建议用静态变量来实现这个功能, 可以实现的方式太多, 但原理都一样, 就是要把这个共用的东西, 剥离出对象, 这个你以后会懂, 现在解释不清, 学习总是一步一步深入的.
你打开一个Form2 然后设置了checkBox1, c的值变了, 可是这并不会影响到你在 Form1_Load 里那个 f2.c, 因为这个 Form2 f2 = new Form2() 里的 f2 是一个新的单独的 Form2, 跟你改变了 checkBox1 的那个 Form2 不是同一个实例.
面向对象的概念, 你应该是还没懂.
会调试不? 如果会的话, 在 public string c = ""; 这句上打个断点, 然后运行程序(或者直接 F11 单步调试), 好好看看一步步到底都做了什么, 你会明白的.
要达到你如题所述的要求, 最简单的实现方式是, public string c = ""; 修改为 public static string c = ""; 用静态变量, 这个不解释了, 自己看书吧.
这种方法简单, 你可以先这么用, 但等你学习深入了, 就不建议用静态变量来实现这个功能, 可以实现的方式太多, 但原理都一样, 就是要把这个共用的东西, 剥离出对象, 这个你以后会懂, 现在解释不清, 学习总是一步一步深入的.
展开全部
新建一个类申请变量 (把变量公开《公开关键字'public‘ 》) 然后 把你要接收的值用新建的类接收在作用于另一个窗体
新建类
{
比如: public string a;
}
a="你要传的值";
if(a!="")
{
(就怎么样!!!!)
}
新建类
{
比如: public string a;
}
a="你要传的值";
if(a!="")
{
(就怎么样!!!!)
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不管用?我笑了.
你给的这是个例子,是告诉你思想。
两个窗体间通过c这个变量来传递想要的值,起一个过渡的作用。
这只是一个简单例子.
你给的这是个例子,是告诉你思想。
两个窗体间通过c这个变量来传递想要的值,起一个过渡的作用。
这只是一个简单例子.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不知道你这到底是要做什么,而且也看不出来。
如果你需要在Form1中 使用 Form2中的变量,可以,这样做就可以。
如果你想,在当你在Form2中点击Button后,Form1就可以弹出并显示C的值的话,那么你得在Form的load里面去设置C的值!
按照你现在的代码逻辑来说,可以在给C赋值的动作下面,添加一行this.close();
试试
如果你需要在Form1中 使用 Form2中的变量,可以,这样做就可以。
如果你想,在当你在Form2中点击Button后,Form1就可以弹出并显示C的值的话,那么你得在Form的load里面去设置C的值!
按照你现在的代码逻辑来说,可以在给C赋值的动作下面,添加一行this.close();
试试
来自:求助得到的回答
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用一个公共类声明个变量,用这个变量接收form2中的值,在赋给form1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询