黑马程序员技术交流社区

标题: 如何实现窗体间传值? [打印本页]

作者: 邓建军    时间: 2013-3-25 20:44
标题: 如何实现窗体间传值?
本帖最后由 邓建军 于 2013-3-25 22:55 编辑

如图所示,当我点击Form1的【打开窗口】按钮,弹出Form2,我想实现这样一个功能,当我在Form2的textBox中输入字符串后,点击Form2的【更改】按钮,Form1的textBox中显示Form2的textBox的内容。

未命名2.jpg (18.35 KB, 下载次数: 9)

未命名2.jpg

作者: 胡志超    时间: 2013-3-25 20:52
在Form1窗体的Button事件里创建Form2对象,然后调用Show()方法,在Form2窗体上改Form1窗体上文本框中的值也是这样
作者: 张怀晶    时间: 2013-3-25 21:49
静态成员可以在多个Form间共享数值
如:
先在类中定义一个静态成员:
   class Class1
    {
        public static string msg;
    }
获取要传递的Form2中TextBox中的值:
    Class1.msg = textBox1.Text.Trim();
在另一个Form中获取值:
    TextBox1.Text=Class1.msg;
作者: 曾玉锋    时间: 2013-3-25 21:58
本帖最后由 曾玉锋 于 2013-3-25 21:59 编辑

用委托变量传值。该委托类型为参数为string类型,无返回值。
在form1中定义一个带string str类型参数的方法update(),方法体中:this.text=str;
在form2中声明一个以上委托类型的变量 p,在按钮的单击事件里,先对p进行判断,如果p!=null,则p(要传的值);
在from1中Form2 f2=new From2()的时候,f2.p=update;

如果楼主不了解委托,可以先看看这部分的知识
作者: DWC_5101    时间: 2013-3-26 23:16
通过属性传值。比如form1要传age值给form2,在form2中添加age属性即可。如form1中代码:form2 f = new form2(); f.age=20; 这样,就把20传到form2了。
作者: 郑丹丹1990    时间: 2013-3-28 14:09
Form1是一个classa吧!你可以给Form1这个class加一个属性。
把文本框中的值付给这个属性。
在Form2中New 一个Form1,这样你就可以访问Form1中你家那个属性值了,即你期望传递的值。
大概的代码如下(这是伪代码)
public class Form1
{
  private string UserName;//这个是Form1的属性值
btnOpenWindow_Click()
{
  UserName=txtUserName.Text;
}
}
public class From2
{
  window_Load()
{
  Form1 form1=new Form1 ();//实例化一个Form1的对象
  txtForm2TextBox.Text=form1.UserName;//txtForm2TextBox是Form2中文本框的ID
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2