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#跨窗體操作



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM