日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#委托零基礎(chǔ)理解(如何實(shí)現(xiàn)父子窗口互傳參數(shù)和更新控件值)

admin
2021年1月29日 16:32 本文熱度 4232

1、為什么使用委托?

委托是c#中非常重要的一個(gè)概念,使用委托使程序員可以將方法引用封裝在委托對(duì)象內(nèi)。然后可以將該委托對(duì)象傳遞給可調(diào)用所引用方法的代碼,而不必在編譯時(shí)知道將調(diào)用哪個(gè)方法。與C或C++中的函數(shù)指針不同,委托是面向?qū)ο?,而且是類型安全的?/p>


2、什么是委托?

委托是一種引用方法的類型,一旦為委托分配了方法,委托將與該方法具有相同的行為,委托方法的使用和其他方法一樣,具有參數(shù)和返回值。


3、如何使用委托?

下面咱們就拋開枯燥的概念,來看幾個(gè)活生生的例子是怎么使用委托的吧!

 案例1:中國(guó)人和英國(guó)人問好

 分析:1.首先我們需要編寫一個(gè)中國(guó)人問好的方法和一個(gè)英國(guó)人問好的方法。

       2.編寫一個(gè)Greet方法,將問好方法作為一個(gè)參數(shù),實(shí)現(xiàn)各個(gè)國(guó)家人的問好方法。

       3.使用委托實(shí)現(xiàn)各個(gè)國(guó)家人的問好功能

  使用委托分為三個(gè)步驟:1,定義委托  2.聲明委托變量  3.使用委托

      // 1.定義委托

       public delegate void GreetDelegate(string name);

      class Program

    {

        static void Main(string[] args)

        {

            //2.聲明委托變量

            GreetDelegate dDelegate = new GreetDelegate(ChineseGreeting);

            //3.使用委托

            dDelegate("李小龍");

            Console.ReadKey();

        }

        //中國(guó)人問好方法

        public static void ChineseGreeting(string name)

        {

            Console.WriteLine("早上好!" + name);

        }

        //英國(guó)人問好方法

        public static void EnglishGreeting(string name)

        {

            Console.WriteLine("Morning!" + name);

        }

        public static void Greet(string name, GreetDelegate makeGreet)

        {

            makeGreet(name);

        }

  }

為了加深大家對(duì)委托的理解,我們?cè)賮韺懸粋€(gè)相似的例子。

案例2:翻譯案例:通過委托將英文翻譯為中文和韓文

//01.聲明一個(gè)委托類

public delegate void MyTransDelegate(string words);

class Program

    {

        static void Main(string[] args)

        {

            //翻譯方法

            //調(diào)用方法一

            //2.聲明委托

            MyTransDelegate del=new MyTransDelegate(TransToCN);

            //3.調(diào)用委托

            del("aa");

            //調(diào)用方法二

            Translate("aa",TransToCN);

            //調(diào)用方式三

            //MyTransDelegate del = TransToCN;

            //del("aa");

             Console.ReadKey();

        }


static  void Translate(string str,MyTransDelegate del)

        {

            del(str);

        }

        static void TransToCN(string str)

        {

            Console.WriteLine("翻譯成中文了!");

        }

        static void TransToKorean(string str)

        {

            Console.WriteLine("翻譯成韓語了!");

        }

}

通過這個(gè)案例,我們可以看出使用委托的方法不止一種,無論使用哪種方式,最終都和方式一一樣。通過反編譯我們可以證明:

如下圖示我通過反編譯看到方法二的代碼:

 

如下是反編譯后方法三的代碼

 

有了上述知識(shí)存儲(chǔ),我們?cè)賮砜匆粋€(gè)案例:

案例3:通過委托將子窗體中的值傳遞到父窗體中

 

如圖有父窗體和子窗體兩個(gè)窗體,現(xiàn)在我想實(shí)現(xiàn)當(dāng)點(diǎn)擊父窗體中按鈕時(shí)彈出子窗體(當(dāng)然這個(gè)超級(jí)簡(jiǎn)單),在彈出子窗體后,在子窗體的文本框中輸入內(nèi)容,點(diǎn)擊關(guān)閉按鈕后子窗體關(guān)閉,并且將子窗體中輸入的內(nèi)容在父窗體的文本框中顯示。

 

子窗體中代碼如下:

//定義委托

        public delegate void Words(string words);

        //聲明委托變量

        public Words words;

        private void button1_Click(object sender, EventArgs e)

        {

            words(txtchild.Text);

            this.Close();

        }

父窗體中的代碼:

private void btnOpen_Click(object sender, EventArgs e)

        {

            Child child = new Child();

            child.words = GetWords;

            child.Show();

        }

        public void GetWords(string str)

        {

            txtMain.Text = str;

        }

我們來分析下上述兩斷代碼:

首先,我們想在子窗體關(guān)閉時(shí),更新父窗體文本框中的數(shù)據(jù)。但是我們非常清楚的知道,窗體之間的空間是不能直接相互訪問的,這時(shí)我們就要找一個(gè)中介幫我們實(shí)現(xiàn)父窗體數(shù)據(jù)的更新功能。于是我們定義了帶一個(gè)參數(shù)沒有返回值的委托Words,并且在父窗體中定義了一個(gè)方法GetWords符合委托的條件。于此同時(shí),在子窗體中聲明了一個(gè)委托變量words,并且在關(guān)閉按鈕中,調(diào)用了委托變量。

但在子窗體中我們沒有對(duì)子窗體委托變量賦值,真正的賦值放到了主窗體中。這樣通過委托就實(shí)現(xiàn)了在子窗體中調(diào)用父窗體的方法,進(jìn)而實(shí)現(xiàn)了父窗體文本框內(nèi)容的更新。

不知道看過上述3個(gè)案例,大家對(duì)委托有沒有一個(gè)相對(duì)清晰的認(rèn)識(shí),如果本文能幫助迷途中的你,那就更好了。


該文章在 2021/1/29 17:55:36 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

日韩tv精品视频| 干人妻久久91| 偷拍人妻久久网| 97在线 |国产| 黄色AAA久久| 日本欧美在线视频| 天天av一区二区三区| 精品尤物一区| 超碰97免费在线| 美国久久大香蕉| 夜夜嗨AⅤ视频国产精品| 偷拍一区| 久久尹人福利视频| 动漫后入内射人妻| 日韩B b在线播放| 亚洲Av码无码在线| 精品少妇AV在线| 女子高潮超碰| 高清乱码 麻豆| 日本人妻一级片| 久久久少妇升职| 国产欧美综合在线匹| 好吊妞视频这里都| 97久久国产亚洲精品超碰热| 91精品视频无码| 蜜臀AⅤ国产精品久久国产老师| 色哟哟日韩精品| 欧美精品A∨| 91久久精品一区二区红卡车| 天堂视频中文字幕| 日本一区二区口工| 亚洲爆菊网站久久| 可以看的黄网站麻豆| 欧美久久综合一区二区插插插| 97guochan| 日本一区二区不卡网站 | 国产欧美日韩手机在线观看| 久热视频在线日本免费观看| 中文国产丰满人妻| 人妻背叛在线中文字幕| 天天射天天干天天都|