程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 委托實例(跨窗體操作控件)

C# 委托實例(跨窗體操作控件)

編輯:C#入門知識

 

今天研究了一下,在C#裡面卻是可以不用自定義消息這麼復雜的方法來實現跨窗體調用控件,C#有更好的辦法就是委托。

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

一、在Form2裡面:

       首先聲明一個委托和委托實例

Form2類外

 

public delegate void ChangeFormColor(bool topmost); 

Form2類裡

 

public event ChangeFormColor ChangeColor; 

Form2的按鈕事件中調用委托

 

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);//執行委托實例 

        } 

    } 

 

最後再給大家介紹一種最簡單的C#跨窗體操作

\

 


摘自 塗劍凱的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved