1、主窗体向子窗体传输
通过构造函数传递
主窗体部分:
public partial class Father : Form { public Father() { InitializeComponent(); } private void button1_Click_1(object sender, EventArgs e) { string shujv = textBox1.Text; int Age = 20; Son s1 = new Son(shujv,Age); s1.Show(); } //1.构造函数 //需要在子窗体的代码中使用构造函数 }子窗体部分:
public partial class Son : Form { //定义所需的字段 private string jieshouShujv;//防止字段的值被随意修改,使用private private int jieshouAge; public Son(string shujv,int age) { InitializeComponent(); jieshouShujv = shujv; jieshouAge = age; textBox1.Text = jieshouShujv+" "+jieshouAge; } }
通过属性传递
主窗体部分:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Son s1=new Son(); s1.UserName = textBox1.Text; s1.Age = 20; s1.Show(); } //通过属性去进行传值 //是在子类去定义属性,并且把定义的属性给分开。 //这样就可以在父类中调用到属性,并可以直接对其赋值,之后子类就可以直接用属性 }子窗体部分:
public partial class Son : Form { //定义属性 public string UserName { get; set; } public int Age { get; set; } public Son() { InitializeComponent(); } private void Son_Load(object sender, EventArgs e) { textBox1.Text= UserName+" "+Age; } }
通过公共方法传递
主窗体部分:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f2= new Form2(); //调用方法更新数据 Thread.Sleep(1000);//使线程休眠 f2.UDXianShi(textBox1.Text,DateTime.Now); f2.ShowDialog(); } }子窗体部分:
public partial class Form2 : Form { public Form2() { InitializeComponent(); } public void UDXianShi(string name,DateTime shijian) { if (this.InvokeRequired) { this.Invoke(new Action(()=>UDXianShi(name,shijian))); } textBox1.Text = name+"的登陆时间"+shijian.ToString("HH:mm:ss"); } }
2、子窗体向主窗体传递
使用委托和事件来进行传递
主窗体部分:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f2=new Form2(); //先将方法传给事件 f2.Databack += SonFormDataBack;//绑定方法并没有执行 f2.Show(); } //之前的代码只是基础 //现在要用方法将执行逻辑封装起来 //随后再把方法给委托 //最后再调用委托和事件来执行逻辑 private void SonFormDataBack(string Data) { textBox1 .Text ="从子窗体返回的数据是:"+ Data; } }子窗体部分:
public partial class Form2 : Form { public Form2() { InitializeComponent(); } //定义委托和事件 //访问修饰符一般为public方便父类调用 //委托后面可以传入参数 public delegate void DatabackDelegate(string Data); //事件除了event后面跟Action外还可以用委托名 public event DatabackDelegate Databack;//事件 private void button1_Click(object sender, EventArgs e) { //子类向父类传数据会用到委托delegate和事件 if (Databack!=null)//判断事件是否为空 { Databack(textBox1.Text); } } }
1077



被折叠的 条评论
为什么被折叠?



