程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 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類裡

代碼如下:

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

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