• C#中跨窗体操作(1)事件



    在应用C#过程中,经常会出现通过“窗口2”来处理“窗口1”上的控件和显示内容等。可以通过事件的处理方式来完成,具体步骤如下:

    1、在“窗体2”中声明事件

       public delegate void Change();
            public event Change myChangeevent;

    2、编写按钮单击事件

          myChangeevent();//执行事件

    3、在“窗体1”中声明“窗体2”的事件,并编写事件处理函数来处理“窗体1”的控件和内容

      按钮单击函数  

         Form2 f = new Form2();
                f.Show();
                f.myChangeevent += new Form2.Change(f_myChangeevent);

      事件处理函数

        void f_myChangeevent()
            {
                //throw new NotImplementedException();
                textBox1.Text = "事件执行成功";
            }

    完整的程序代码:

      Form1:

     1 using System;
    2 using System.Collections.Generic;
    3 using System.ComponentModel;
    4 using System.Data;
    5 using System.Drawing;
    6 using System.Linq;
    7 using System.Text;
    8 using System.Windows.Forms;
    9
    10 namespace Test跨窗体
    11 {
    12 public partial class Form1 : Form
    13 {
    14 public Form1()
    15 {
    16 InitializeComponent();
    17 }
    18
    19 private void button1_Click(object sender, EventArgs e)
    20 {
    21 Form2 f = new Form2();
    22 f.Show();
    23 f.myChangeevent += new Form2.Change(f_myChangeevent);
    24 }void f_myChangeevent()
    25 {
    26 //throw new NotImplementedException();
    27 textBox1.Text = "事件执行成功";
    28 }
    29 }
    30 }

    Form2:

     1 using System;
    2 using System.Collections.Generic;
    3 using System.ComponentModel;
    4 using System.Data;
    5 using System.Drawing;
    6 using System.Linq;
    7 using System.Text;
    8 using System.Windows.Forms;
    9
    10 namespace Test跨窗体
    11 {
    12 public partial class Form2 : Form
    13 {
    14 public Form2()
    15 {
    16 InitializeComponent();
    17 }
    18 public delegate void Change();
    19 public event Change myChangeevent;
    20 public Change myChange;
    21 private void button1_Click(object sender, EventArgs e)
    22 {
    23 //myChange = new Change(Print);
    24 //this.Invoke(myChange);//执行委托
    25 myChangeevent();//执行事件
    26 }
    27 private void Print()
    28 {
    29 button1.Text = "委托执行";
    30 }
    31 }
    32 }

    委托和事件的最大区别在于:委托可以在任意时刻调用处理函数,而事件只能在固定的出发了当前事件时才能调用。

  • 相关阅读:
    Linux-netstat
    API接口防止参数篡改和重放攻击
    Java中遍历Map的几种方式
    Java泛型中的标记符含义
    Iterator 和 for...of 循环
    Promise 对象
    Reflect
    正则要求密码长度最少12位,包含至少1个特殊字符,2个数字,2个大写字母和一些小写字母。
    一个JS正则表达式,一个正实数,整数部分最多11位 小数部分最多 8位
    java阿里云短信发送配置
  • 原文地址:https://www.cnblogs.com/suifengpiaoshan/p/2373161.html
Copyright © 2020-2023  润新知