zoukankan      html  css  js  c++  java
  • 窗体传值 (通过事件)

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

    好处:

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

    很好的封装的思想。

    事件的方法:

    //主窗体

    //主窗体 通过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";
          }

        }

    子窗体:

     Form1 parentForm;
            public Form2(Form1 f)
            {
                InitializeComponent();
                parentForm = f;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                parentForm.changeTxt();
            }
    

      

  • 相关阅读:
    mac github访问不稳定解决办法
    前后端项目部署-2, flask+Gunicorn+gevent,docker部署,
    前后端项目部署-1, flask,只有flask,一个最简单的flask项目部署到Docker的过程,
    mac,VMware,安装centos7,虚拟机,无界面
    深网简介
    mitmproxy抓包工具使用 for mac
    安卓抓取的另外一种思路
    安卓手机设置权限,adb pull permission denied解决办法
    爬虫工程师到底为什么要学习安卓逆向?
    爬虫工程师日常都是做什么。
  • 原文地址:https://www.cnblogs.com/zhayunjia/p/4613587.html
Copyright © 2011-2022 走看看