请教c# 窗体间的值的传递的问题。
例如,一共三类form窗口:我在form1中点button1,弹出一个窗口form2,里面有个label1;点击form1的button2,然后弹出一个新的窗口form3...
例如,一共三类form窗口:我在form1中点button1,弹出一个窗口form2,里面有个label1;点击form1的button2,然后弹出一个新的窗口form3,其有一个textbox,希望form3的textbox值为form2的label1的text。如何实现?主要涉及非父子窗口之间的值传递。 谢谢!最好有代码表现,谢谢!
展开
8个回答
展开全部
这个窗体间传值:原理很简单,使用具体步骤如下:
一、定义:在工程中新建一个Helper类
Class Helper{
//定义公共的静态属性赋值为空,用于保存label1的text
public static String lblText="";
}
二、初始化:在窗体form2中初始化该字段lblText,即
Helper.lblText=值;
三、调用:在窗体form3的textBox中显示值
this.textBox.text=Helper.lblText;
************如果是要加载窗体时调用,则在from3的load事件中写,此处视乎为单击button2事件时调用
一、定义:在工程中新建一个Helper类
Class Helper{
//定义公共的静态属性赋值为空,用于保存label1的text
public static String lblText="";
}
二、初始化:在窗体form2中初始化该字段lblText,即
Helper.lblText=值;
三、调用:在窗体form3的textBox中显示值
this.textBox.text=Helper.lblText;
************如果是要加载窗体时调用,则在from3的load事件中写,此处视乎为单击button2事件时调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非父子窗口之间不能传递值,你要通过一个中介的,比如全局变量,或者公共的父窗口。
全局变量很好说,弹出 form2 时直接将实例赋值给全局变量,然后 form3 就可以读取这个全局变量了。
或者,在父窗口里面,显示 form3 之前,先读取 form2 的值,然后对 form3 赋值,再显示。
全局变量很好说,弹出 form2 时直接将实例赋值给全局变量,然后 form3 就可以读取这个全局变量了。
或者,在父窗口里面,显示 form3 之前,先读取 form2 的值,然后对 form3 赋值,再显示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我以前写过一个专题,关于窗口间传值的问题,你可以看看。http://hi.baidu.com/yaobing0687/blog/item/b2c8433f617bc33771cf6c38.html
这里针对你的问题我简单说下:
在Form2中定义一个Public 变量str2;在获取值之前给他赋值。
在Form3中定义一个Public 变量str3;在FormLoad里将他赋值给TextBox。
在Form1中:
Form2 f2=new Form2();
f2.Show();
string StrInForm1=f2.str2;
Form3 f3=new Form3();
f3.str3=StrInForm1;
f3.Show();
这里针对你的问题我简单说下:
在Form2中定义一个Public 变量str2;在获取值之前给他赋值。
在Form3中定义一个Public 变量str3;在FormLoad里将他赋值给TextBox。
在Form1中:
Form2 f2=new Form2();
f2.Show();
string StrInForm1=f2.str2;
Form3 f3=new Form3();
f3.str3=StrInForm1;
f3.Show();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
窗体1代码
public partial class Form1 : Form
{
private string m_Msg;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
m_Msg = f2.Msg;
f2.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3(m_Msg);
f3.Show();
}
}
窗体2代码
public partial class Form2 : Form
{
private string msg;
public string Msg
{
get { return msg; }
set { msg = value; }
}
public Form2()
{
InitializeComponent();
msg = label1.Text;
}
}
窗体3代码
public partial class Form3 : Form
{
public Form3(string msg)
{
InitializeComponent();
textBox1.Text = msg;
}
}
public partial class Form1 : Form
{
private string m_Msg;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
m_Msg = f2.Msg;
f2.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3(m_Msg);
f3.Show();
}
}
窗体2代码
public partial class Form2 : Form
{
private string msg;
public string Msg
{
get { return msg; }
set { msg = value; }
}
public Form2()
{
InitializeComponent();
msg = label1.Text;
}
}
窗体3代码
public partial class Form3 : Form
{
public Form3(string msg)
{
InitializeComponent();
textBox1.Text = msg;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个可以实现,建议用C#的委托实现不同form之间的值的传递和函数的调用很好用的。但是我这机器里没环境,实现不了代码,估计下午装完vs10。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询