日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#类中操作UI层控件状态[原]

發(fā)布時(shí)間:2025/7/14 C# 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#类中操作UI层控件状态[原] 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一直以來都是接觸B/S開發(fā),很少做C/S開發(fā),線程就用得更少了,最近做一些工作中用到的小軟件終于用上了線程,記錄一些心得.
場景:
??????1:假設(shè)有窗體F,里面有一按鈕BtnA,及一Label控件.
????? 2:有一類A,里面有一方法Start().
要求:
??????點(diǎn)擊按鈕BtnA后,根據(jù)Start()方法里面操作邏輯,將狀態(tài)顯示在Label中.

最開始做的時(shí)候是實(shí)例化類A的時(shí)候?qū)⒄麄€(gè)窗體或者要改變值的控件傳入類A中,然后再在類A中操作,可想而知這樣是非常不好的.
查閱資料后,終于找到了一點(diǎn)解決方法:利用委托或事件,以下是基本代碼.

Code 窗體代碼
?1?private?void?BtnA_Click(object?sender,?EventArgs?e)
?2????????{
?3????????????A?ms?=?new?A();
?4????????????//委托方法{實(shí)例化類A中定義的委托}
?5????????????//ms.tt=?new?A.dSetSourceInfo(this.SetInfoOne);
?6????????????//
?7????????????//事件觸發(fā){注冊類A中定義的事件}
?8????????????ms.SetInfo?+=?new?EventHandler(ms_SetInfoTwo);
?9????????????Thread?m?=?new?Thread(new?ThreadStart(ms.Start));
10????????????m.Start();
11????????}

12
13
14//委托
15
16????????private?delegate?void?mySetInfo(string?s);
17????????void?SetInfoOne(string?s)
18????????{
19????????????if?(this.InvokeRequired)
20????????????{
21????????????????this.Invoke(new?mySetInfo(SetInfoOne),?s);
22????????????????return;
23????????????}

24????????????this.Label1.Text?=?s;
25????????}

26
27
28//事件
29
30????????void?ms_SetInfoTwo(object?sender,?EventArgs?e)
31????????{
32????????????if?(this.InvokeRequired)
33????????????{
34???????????????this.Invoke(new?System.EventHandler(ms_SetInfoTwo),?sender);
35???????????????return;
36????????????}

37????????????this.Label1.Text?=?(string)sender;
38????????}




Code 類A
?1??public?class?A?
?2????{
?3????????//定義事件
?4????????public?event?EventHandler?SetInfo;
?5????????//類A中執(zhí)行的事件
?6????????private?void?SetSourceInfo(object?sender,?EventArgs?e)
?7????????{
?8????????????if?(SetInfo!=?null)?{?SetInfo(sender,?e);?}
?9????????}

10????????//
11????????//定義委托
12????????public?dSetSourceInfo tt;
13????????public?delegate?void?dSetSourceInfo(string?str);
14????????//類A中執(zhí)行的方法
15????????private?void?SetSourceInfott(string?str)
16????????{
17????????????if?(tt?!=?null)?{?tt(str);?}
18????????}

19????????public?A()?{?}
20???????
21???????/**////?<summary>
22???????///?開始
23????????///?</summary>

24????????public?void?Start()?
25????????{
26????????????//委托使用
27????????????//SetSourceInfott("哈哈哈");
28????????????//Thread.Sleep(1000);
29????????????//SetSourceInfott("哈哈哈1");
30????????????//Thread.Sleep(1000);
31????????????//SetSourceInfott("哈哈哈2");
32????????????
33????????????//事件使用
34??????????????SetSourceInfo("哈哈哈",null);
35????????????Thread.Sleep(1000);
36????????????SetSourceInfo("哈哈哈1",null);
37????????????Thread.Sleep(1000);
38????????????SetSourceInfo("哈哈哈2",null);
39????????}

40?????}


以上為一些簡單的應(yīng)用,其它復(fù)雜的基本上都可以按照這一招來做.



轉(zhuǎn)載于:https://www.cnblogs.com/Mars_Chen/archive/2009/10/10/1580299.html

總結(jié)

以上是生活随笔為你收集整理的C#类中操作UI层控件状态[原]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。