打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
窗体传值 (通过事件)

学习到一个新的窗体之间传值的方法。

好处:

省去各种变量的传递。大大减少之前传值一直习惯用的静态全局变量。

很好的封装的思想。

 

事件的方法:

//主窗体

//主窗体 通过button创建子窗体namespace 事件{ public partial class Form1 : Form {public static Form1 myf; public Form1() { InitializeComponent(); myf = this; } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.Show(); } public void frm_eventAddress(string a) { label1.Text = a; }}

子窗体:

namespace 事件{ public partial class Form2 : Form { //声明一个委托方法 public delegate void addAddress(string a); //申明一个事件 public event addAddress eventAddress; public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) {
//添加订阅者 eventAddress += new addAddress(Form2_eventAddress); //触发事件 eventAddress(textBox1.Text); } void Form2_eventAddress(string a) { Form1.myf.frm_eventAddress(a); } }}

 

最近又掌握了一个简单的方法:

每个窗口都是一个类,窗口启动时,就是使用窗口类的实例。窗口里的空间默认都是窗口类的私有成员。

思路1把窗口里的控件变为public,这样任意访问。
思路2在各个窗口类建立public的函数,用函数参数传递值,函数控制控件的值。
思路3使用static成员。你可以另外声明一个类,在这里面定义public的static成员,也可以直接在窗口类中定义。也就是所谓的全局变量。

 

思路二:

主窗体:

public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f = new Form2(this); f.Show(); }

      public void changeTxt()
      {
        this.label1.Text = 'fff';
      }

}

子窗体:

1
2
3
4
5
6
7
8
9
10
11
Form1 parentForm;
       public Form2(Form1 f)
       {
           InitializeComponent();
           parentForm = f;
       }
       private void button1_Click(object sender, EventArgs e)
       {
           parentForm.changeTxt();
       }

  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# WinForm DataGridView取当前行和窗体之间传值或调方法
C#,winform,ShowDialog,子窗体向父窗体传值
在C#中如何在窗体间访问其他窗体中的成员呢
05、C#--Winform(一)
C#跨窗体传递值
利用委托自定义事件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服