首页 新闻 会员 周边

winform中用户控件之间的传值

0
[已解决问题] 解决于 2012-12-17 14:47

一个winform窗体,两个用户控件,usercontrol1和usercontrol2中分别都有一个有一个button和一个textbox,当运行主程序的时候,窗体首先加载usercontrol1,点击usercontrol1中的button,窗体就会呈现usercontrol2,并且要求usercontrol2中的textbox值必须是usercontrol1中textbox输入的值。

我是个C#新手,希望各位能帮帮我!

周大大的主页 周大大 | 菜鸟二级 | 园豆:231
提问于:2012-09-26 13:20
< >
分享
最佳答案
1

在usercontrol1类里面可以声明一个字段,当点击button时将输入值赋值给它,然后再usercontrol2初始化的时候通过usercontrol1.字段 去访问这个字段就能获取到你之前输入的值了!然后赋值给usercontrol2的文本框中就可以了!

奖励园豆:5
让手指在键盘上飞舞 | 初学一级 |园豆:82 | 2012-09-26 14:34

我这样试过,可是在usercontrol2中依然获取不到啊!

我是这样做的:在usercontrol1中声明了一个全局的静态变量,然后再点击button时就把textbox中的值赋给这个变量,再在usercontrol2初始化的时候通过usercontrol1.变量 把它赋值给usercontrol2的textbox,但是获取不到!

周大大 | 园豆:231 (菜鸟二级) | 2012-09-27 20:37

@紫逸1991100这个变量是public的吗?

让手指在键盘上飞舞 | 园豆:82 (初学一级) | 2012-09-27 21:44

@让手指在键盘上飞舞: 第一种方法: 创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名 进行调用。(这种方法传递是双向的) 第二种方法: 1.在Form1里定义 public string Name = "*****" 2. 在Form2里创建Form1对象, Form1 f = new Form1(); 然后就可以通过f.Name取值了 第三种方法:用构造函数 在窗体Form2中 int value1; string value2; public Form2 ( int value1 , string value2 ) { InitializeComponent ( ); this.value1 = value1; this.value2 = value2; } 在窗体Form1中这样调用 new Form2 ( 111 , "222" ).Show ( ); 这样就把111,"222",这2个值传送给了Form2 d 但是这样的传值是单向的 第四种方法:通过窗体的公有属性值(特点:实现简单) 举例“在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值 public string Form2Value { get { return this.textBox1.Text; } set { this.textBox1.Text = value; } } 在窗体Form1中这样调用 Form2 f2 = new Form2 ( ); f2.Form2Value = "Ok"; //给Form2的textBox1赋值Ok f2.ShowDialog ( ); 第五种方法:通过窗体的公有属性值和Owner属性(特点:实现简单,灵活) 在窗体Form1中 public int Form1Value = 1; Form2 f2 = new Form2 ( ); f2.ShowDialog ( this ); //把Form1作为Form2的所有者传递给Form2 在窗体Form2中 //Form2的所有者是Form1 Form1 f1 = ( Form1 ) this.Owner; //取到Form1的值是1 MessageBox.Show ( f1.Form1Value .ToString ( ) ); //给Form1的Form1Value赋值222 f1.Form1Value = 222;

让手指在键盘上飞舞 | 园豆:82 (初学一级) | 2012-09-27 21:48
其他回答(1)
0

usercontrol1中的button的点击事件里头,将usercontrol1中textbox输入的值赋值给usercontrol2中的textbox值就可以了哦。

念念啊 | 园豆:415 (菜鸟二级) | 2012-09-26 13:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册