• C# 委托实例(跨窗体操作控件)


    在C#里面却是可以不用自定义消息这么复杂的方法来实现跨窗体调用控件,C#有更好的办法就是委托。

    效果描述:有两个窗体,FORM1(一个名为“打开form2”的button控件)和FORM2(一个名为“改变form1颜色“的button控件)。启动时,FORM1中点击button控件“打开form2””使FORM2显示出来。点击FORM2中的“改变form1颜色”后,Form1中颜色改变。

    一、在Form2里面:
           首先声明一个委托和委托实例
    Form2类外

    1. public delegate void ChangeFormColor(bool topmost);  

    Form2类里

    1. public event ChangeFormColor ChangeColor;  

    Form2的按钮事件中调用委托

    1. private void button1_Click(object sender, EventArgs e)  
    2.         {  
    3.             ChangeColor(true);//执行委托实例  
    4.         }  


    二、在Form1里面:
    button控件“打开form2“的click事件中有下面的代码:

    1. {  
    2.     Form2 f = new Form2();  
    3.     f.ChangeColor += new ChangeFormColor(f_ChangeColor);  
    4.     f.Show();  
    5. }  

    f.ChangeColor += new ChangeFormColor(f_ChangeColor);
    这句最关键,你输入到+=之后,按两下Tab,他会自动给你生成回调函数,如下:

    1. void f_ChangeColor(bool topmost)  
    2.         {  
    3.             this.BackColor = Color.LightBlue;  
    4.             this.Text = "改变成功";  
    5.         }  



     三、完整代码

    1. using System;  
    2. using System.Drawing;  
    3. using System.Windows.Forms;  
    4.   
    5. namespace 跨窗体调用控件  
    6. {  
    7.     public partial class Form1 : Form  
    8.     {  
    9.         public Form1()  
    10.         {  
    11.             InitializeComponent();  
    12.         }  
    13.         private void button1_Click(object sender, EventArgs e)  
    14.         {  
    15.             Form2 f = new Form2();  
    16.             f.ChangeColor += new ChangeFormColor(f_ChangeColor);  
    17.             f.Show();  
    18.         }  
    19.         void f_ChangeColor(bool topmost)  
    20.         {  
    21.             this.BackColor = Color.LightBlue;  
    22.             this.Text = "改变成功";  
    23.         }  
    24.     }  
    25. }  


     

    1. using System;  
    2. using System.Windows.Forms;  
    3.   
    4. namespace 跨窗体调用控件  
    5. {  
    6.     public delegate void ChangeFormColor(bool topmost);  
    7.     public partial class Form2 : Form  
    8.     {  
    9.         public Form2()  
    10.         {  
    11.             InitializeComponent();  
    12.         }  
    13.         public event ChangeFormColor ChangeColor;  
    14.         private void button1_Click(object sender, EventArgs e)  
    15.         {  
    16.             ChangeColor(true);//执行委托实例  
    17.         }  
    18.     }  
    19. }  

    最后再给大家介绍一种最简单的C#跨窗体操作


  • 相关阅读:
    设计模式学习08:享元模式
    设计模式学习07:适配器模式
    设计模式学习06:策略模式和简单工厂模式
    XCode Debugger中的Icon符号的意义
    蒲公英——APP内测分发平台
    分享申请IDP账号的过程,包含duns申请的分享
    Dash——程序员的的好帮手:API文档浏览器+代码片段管理工具
    xScope——界面设计师的终极工具箱
    Alcatraz——Xcode插件管理工具
    苹果向开发者发布 Xcode 6.3.2 GM版 修复 Bug
  • 原文地址:https://www.cnblogs.com/FoR_Oscar/p/5481326.html
Copyright © 2020-2023  润新知