古詩詞大全網 - 個性簽名 - 委托是什麽哦?輸入的內容如何傳遞到標簽裏的

委托是什麽哦?輸入的內容如何傳遞到標簽裏的

namespace WindowsApplication3

{

public partial class Form1 : Form

{

//定義委托

public delegate void ChangeTextHandler(string text);//******************** 1

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)//****************** 2

{

Form2 frm2 = new Form2();

frm2.cth = new ChangeTextHandler(ChangeLable);

frm2.Show();

}

/// <summary>

/// 委托關聯的方法

/// </summary>

/// <param name="str"></param>

public void ChangeLable(string str) //************************************ 3

{

label1.Text = str;

}

}

}

另壹個窗體

namespace WindowsApplication3

{

public partial class Form2 : Form

{

public WindowsApplication3.Form1.ChangeTextHandler cth; //*************** 4

public Form2()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e) //*************** 5

{

cth(textBox1.Text);

}

}

}

A>首先看 1,這裏我們在Form1類中定義了壹個委托,委托的名稱是ChangeTextHandler,返回值是void,參數是壹個string;

B>看2,這裏我們即將創建壹個委托對象,創建的方法是 new 委托名(委托指代的方法);這裏委托指代的方法就是ChangeLabel,這個方法是屬於Form1類的,請記住

C>等等,妳有沒有註意到,2中我們的委托對象是誰?cth,它在Form2裏進行了聲明,請看4,所以它是屬於Fom2類創建的對象的,因此才使用frm2.cth的寫法

C>好了,然後我們看整個程序是怎樣運行的:

1.vs啟動了Form1,Form1初始化完畢;

2.用戶點擊了button1,引起了button1_Click方法的執行;

Form2 frm2 = new Form2(); //frm2這個窗體對象生成並初始化,此時,frm2裏面有壹個cth的委托聲明和壹個button1_Click方法

frm2.cth = new ChangeTextHandler(ChangeLable); //frm2的cth正式從聲明變成了真正的委托對象,它指代ChangeLable方法

frm2.Show(); //frm2顯示

3.用戶點擊了frm2上的button1(可以這樣理解,妳在設計視圖裏設計的窗體是壹個類,但是當妳F5之後,妳所看到的窗體叫做窗體對象),button1_Click方法被執行

cth(textBox1.Text); //cth指代ChangeLabel,相當於執行了ChangeLabel(textBox1.Text),因此,窗體2上的文本框內容賦值給窗體1的標簽!

兄弟註意壹下啊,妳的label拼寫錯誤啦