两个窗体传值c#

[复制链接]
查看11 | 回复4 | 2009-8-4 17:33:03 | 显示全部楼层 |阅读模式
这跟传值有什么关系啊。你要是传值就建一个公共类,public class Class1
{
public static string zhi;
}把值传给zhi然后传给你的label的Text就可以了。
回复

使用道具 举报

千问 | 2009-8-4 17:33:03 | 显示全部楼层
窗体一:public partial class Demo1 : Form
{
Demo2 d2 = new Demo2();
public Demo1()
{
InitializeComponent();
}
//显示另一窗体
private void button1_Click(object sender, EventArgs e)
{
d2.d1 = this;
d2.Show();
}
//改变另一窗体lbl的值
private void button2_Click(object sender, EventArgs e)
{
d2.lblDemo2.Text = "改变另一窗体值";
}
}窗体2:记住窗体2上的lbl必须是public的。lable的public设置方法:modifiers设置成publicpublic partial class Demo2 : Form
{
public Demo1 d1 = null;//必须加上
public Demo2()
{
InitializeComponent();
}
}
回复

使用道具 举报

千问 | 2009-8-4 17:33:03 | 显示全部楼层
B里面加一个函数public void setlabel(string s1,string s2){label1.text=s1;label2.text=s2;}A里面加一个全局变量FormB f;通过构造函数将B的this传过去然后在buttonclick里面调用setlabel(s1,s2);
回复

使用道具 举报

千问 | 2009-8-4 17:33:03 | 显示全部楼层
在窗体B类文件中定义两个全局变量,public修饰。如下:public string s1; public string s2;在窗体A的Button按钮Click事件中代码如下:BForm frmB = new BForm(); //实例化B窗体//以下两句为传值,注意数据类型frmB.s1 = "你要赋的值1";frmB.s2 = "你要赋的值2";frmB.Show();
//打开B窗体在B窗体的Load事件中将前面定义的两个全局变量赋值给Labelthis.lbl1.text = s1;this.lbl2.text = s2;这样就实现了两个窗体间传值了。如果要传的值多,可以再B里面定义一个public修饰的方法,通过方法传值也可以。
回复

使用道具 举报

千问 | 2009-8-4 17:33:03 | 显示全部楼层
方法有多种,介绍常用2种:假设有窗体a,a上面有很多label控件,a上面还有一个button按钮,点击按钮弹出窗体b窗体b上的某个button按钮点击时查询sql方法1:在点击a上面的按钮弹出窗体b时不是要写formbb=newformb();嘛,这个时候给窗体b,也就是formb增加一个带参数的构造方法,参数即是forma类型,然后弹出时写formbb=newformb(this);即可。在b类中增加一个字段formaa;然后在上面增加的带参数构造方法里面赋值a=forma;方法2:同方法1,只不过构造方法里面的参数是字符串,直接把label的值传递过去你的A和B是什么关系啊?比如A是B的子窗体那么肯定有 ClassB B=new ClassB(null);类似的语句之后B.show();注意的是,这个ClassB 不要放在函数里,放在全局变量的位置。然后就可以在按钮的click事件中B.Tex1.Text="123";
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行