单向传值,可以通过构造函数将值传入。也就是给窗体编写带参数的构造函数。通过构造函数的参数传递特定的值。传多个值定义多个参数即可。当然,也可以使用属性传入。看下面的代码,假设我们建立了一个SubForm窗体它接父窗体传入的值: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Zhnet { public partial class SubForm : Form { ////使用字段来存储传入的值 private int Rid; private string Info; ////常规的构造我们可以什么也不做 public SubForm() { InitializeComponent(); } //////重载一种构造来传入值 public SubForm(int _RId, string _Information) { Rid = _RId; Info = _Infomation; InitializeComponent(); } } } 这下在来看看,我们要在父窗体只打开子窗体,并传值给子窗体。看下面代码(在父窗体中显示上面子窗体的代码): SubForm Form1 = new SubForm(2, "这是传入的字符串值"); Form1.Show(this); 这样就将值传给了子窗体了。
Form1打开form2的按钮事件里:Form2 f2 = new Form2(); f2.show(); f2.textbox1.Text = textbox1.Text; this.Close();这样就可以了,记住要把Form2窗体中的textbox1的Modifiers属性改成public
form2中调用这个方法取值
另外如果登陆成功显示form2的话,可以再创建form2对象的时候通过构造方法传参。
另处一个就是页面传值。页面传值一般都是一些大的数据会进行。或是在新打开的窗口控制之前打开窗口的控件为最佳选择。向你的需求我个人认为一个公共变量或是属性都可以搞定。楼主:看看下面的这个贴子,讲的很详细。
http://dev.csdn.net/article/26/26433.shtm
可以定一个全局的静态变量;还可以给Form2定义一个属性(类型根据需求写);还有种就是2楼说的,通过构造函数,改变Form2默认的构造函数
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Zhnet
{
public partial class SubForm : Form
{
////使用字段来存储传入的值
private int Rid;
private string Info; ////常规的构造我们可以什么也不做
public SubForm()
{
InitializeComponent();
} //////重载一种构造来传入值
public SubForm(int _RId, string _Information)
{
Rid = _RId;
Info = _Infomation;
InitializeComponent();
}
}
}
这下在来看看,我们要在父窗体只打开子窗体,并传值给子窗体。看下面代码(在父窗体中显示上面子窗体的代码):
SubForm Form1 = new SubForm(2, "这是传入的字符串值");
Form1.Show(this);
这样就将值传给了子窗体了。
f2.show();
f2.textbox1.Text = textbox1.Text;
this.Close();这样就可以了,记住要把Form2窗体中的textbox1的Modifiers属性改成public
打开时从这个类取值