C# 窗體間傳值(使用委托與自定義事件)


效果描述:有兩個窗體,FORM1(一個名為“打開form2”的button控件)和FORM2(一個名為“改變form1顏色“的button 控件)。啟動時,FORM1中點擊button控件“打開form2””使FORM2顯示出來。點擊FORM2中的“改變form1顏色”后,Form1 中顏色改變。

一、在Form2里面:
       首先聲明一個委托和委托實例
Form2類外

 
  1.     public delegate void ChangeFormColor(bool topmost);  

     

Form2類里

 
    public event ChangeFormColor ChangeColor;  

 

Form2的按鈕事件中調用委托

[csharp] view plain copy
    private void button1_Click(object sender, EventArgs e)  
            {  
                ChangeColor(true);//執行委托實例  
            }  

 


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

 
    {  
        Form2 f = new Form2();  
        f.ChangeColor += new ChangeFormColor(f_ChangeColor);  
        f.Show();  
    }  

 

f.ChangeColor += new ChangeFormColor(f_ChangeColor);
這句最關鍵,你輸入到+=之后,按兩下Tab,他會自動給你生成回調函數,如下:

    void f_ChangeColor(bool topmost)  
            {  
                this.BackColor = Color.LightBlue;  
                this.Text = "改變成功";  
            }  

 



 三、完整代碼

    using System;  
    using System.Drawing;  
    using System.Windows.Forms;  
      
    namespace 跨窗體調用控件  
    {  
        public partial class Form1 : Form  
        {  
            public Form1()  
            {  
                InitializeComponent();  
            }  
            private void button1_Click(object sender, EventArgs e)  
            {  
                Form2 f = new Form2();  
                f.ChangeColor += new ChangeFormColor(f_ChangeColor);  
                f.Show();  
            }  
            void f_ChangeColor(bool topmost)  
            {  
                this.BackColor = Color.LightBlue;  
                this.Text = "改變成功";  
            }  
        }  
    }  

 

 

 
    using System;  
    using System.Windows.Forms;  
      
    namespace 跨窗體調用控件  
    {  
        public delegate void ChangeFormColor(bool topmost);  
        public partial class Form2 : Form  
        {  
            public Form2()  
            {  
                InitializeComponent();  
            }  
            public event ChangeFormColor ChangeColor;  
            private void button1_Click(object sender, EventArgs e)  
            {  
                ChangeColor(true);//執行委托實例  
            }  
        }  
    }  

 

 


 

轉自:http://blog.csdn.net/bdstjk/article/details/7004035


免責聲明!

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



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