国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C#的對(duì)象間數(shù)據(jù)傳遞方法分析及實(shí)現(xiàn)

2011-08-08 12:48:16陳南南
電腦與電信 2011年11期
關(guān)鍵詞:窗體字號(hào)控件

陳南南

(廈門大學(xué)嘉庚學(xué)院, 福建 廈門 363105)

1.引言

在面向過程的結(jié)構(gòu)化編程中,數(shù)據(jù)傳遞通常以函數(shù)間的參數(shù)傳遞方式實(shí)現(xiàn)。但在面向?qū)ο蟮氖录?qū)動(dòng)機(jī)制的編程模式中,由于類的存在,使得數(shù)據(jù)更多地是在對(duì)象間進(jìn)行傳遞。特別是在多窗體程序中,窗體間的數(shù)據(jù)傳遞更加頻繁。因此,如何規(guī)范安全地實(shí)現(xiàn)不同對(duì)象間的數(shù)據(jù)傳遞成為關(guān)鍵。

2.窗體間的數(shù)據(jù)傳遞

在面向?qū)ο缶幊讨?,本類中的函?shù)參數(shù)傳遞方法與面向過程的編程方法類似,本文就不進(jìn)行闡述了。為了更直觀地了解數(shù)據(jù)在不同對(duì)象間的傳遞,下文以一個(gè)基于C#的多窗體小程序?yàn)槔治龀绦蛑谐霈F(xiàn)的

幾種數(shù)據(jù)傳遞方法。如圖1所示,F(xiàn)orm1中,點(diǎn)擊字號(hào)按鈕后,顯示Form2窗體,由該窗體中的滑動(dòng)條控制Form1中標(biāo)簽控件中的文本字號(hào),滑動(dòng)條當(dāng)前value值為標(biāo)簽控件中當(dāng)前字號(hào)大小值。這個(gè)小實(shí)例雖然簡(jiǎn)單,但其中包含了幾種典型的數(shù)據(jù)傳遞方式,這幾種方式可以分成兩個(gè)階段:主窗體向從窗體傳遞、從窗體向主窗體傳遞。

圖1 實(shí)例截圖

3.主窗體向從窗體傳遞

Form1與Form2分屬不同的類,在不同的類對(duì)象間進(jìn)行參數(shù)傳遞,主要有以下幾種方式。

3.1 設(shè)置類的靜態(tài)變量

在類定義過程中定義一個(gè)靜態(tài)變量,在不同類對(duì)象中應(yīng)用時(shí)可以直接用類名引用該變量,這種方式實(shí)現(xiàn)簡(jiǎn)單,但不符合面向?qū)ο蟮姆庋b思想,而且不同的類對(duì)象只能共用該變量,無“個(gè)性”。在本例中不適用。

3.2 構(gòu)造函數(shù)參數(shù)傳遞

本例中,F(xiàn)orm2顯示時(shí)需要接收主窗體傳遞過來的主窗體對(duì)象參數(shù)以及標(biāo)簽當(dāng)前字號(hào)值。在Form2中設(shè)置一個(gè)public的有參數(shù)構(gòu)造函數(shù)。

在Form1中點(diǎn)擊字號(hào)按鈕創(chuàng)建Form2對(duì)象時(shí),在按鈕單擊事件處理函數(shù)中通過構(gòu)造函數(shù)傳遞參數(shù),F(xiàn)orm2 f2=new Form2(this,(int)label1.Font.Size)。

使用構(gòu)造函數(shù)傳遞參數(shù)實(shí)現(xiàn)簡(jiǎn)單,適合與傳遞對(duì)象建立時(shí)所需的初始值。但這種方式只能是一次性傳遞,下次再用構(gòu)造函數(shù)傳遞參數(shù)時(shí),傳遞的目標(biāo)是一個(gè)新的對(duì)象,而不是原來的從窗體了。

3.3 使用屬性傳遞

當(dāng)需要多次從主窗體中接收數(shù)據(jù)時(shí),可以在從窗體中定義一個(gè)public變量,在主窗體中用對(duì)象名.變量名的格式進(jìn)行賦值傳遞,但這種方式不符合面向?qū)ο缶幊趟枷胫蟹庋b性原則,且不安全。所以可以在從窗體中定義一個(gè)public類型的可讀寫屬性,在主窗體中用對(duì)象名.屬性名的格式進(jìn)行讀寫設(shè)置,具體實(shí)現(xiàn)方法在本例中不做詳細(xì)實(shí)現(xiàn)。

4.從窗體向主窗體傳遞

在從窗體創(chuàng)建并顯示后,根據(jù)滑動(dòng)條的左右滑動(dòng),修改主窗體中標(biāo)簽文本字號(hào),這就需要從窗體向主窗體傳遞滑動(dòng)條的Value屬性值。有兩種實(shí)現(xiàn)方法:

4.1 設(shè)置控件Modifiers屬性

將主窗體Form1中的標(biāo)簽Label1控件的modifiers屬性由Private改為Public,這樣就可以在從窗體的相應(yīng)事件處理函數(shù)中對(duì)標(biāo)簽控件的Font屬性進(jìn)行直接賦值修改。

但從面向?qū)ο蟪绦虻姆庋b性及安全性考慮,隨意修改類成員的訪問權(quán)限是不可靠的。所以最佳辦法應(yīng)該利用委托與事件的消息訂閱機(jī)制來傳遞數(shù)據(jù)。

4.2 委托與事件

委托與事件是面向?qū)ο缶幊趟枷胫械闹匾拍钪唬彩亲畈灰桌斫獾母拍钪?。委托在功能上它類似C語(yǔ)言的函數(shù)指針,目的是通過創(chuàng)建委托類型對(duì)象去調(diào)用函數(shù)。而事件則是一種特殊的委托,事件能完成的委托也能夠完成,但事件的封裝性及安全性要求更高,是一種特制的更為專業(yè)化的委托。二者的主要區(qū)別在于:第一,事件只能在本類以外用“+=”和“-=”去訂閱/取消訂閱代理,委托不管在本類外部還是內(nèi)部都可以用“+=”、“-=”和“=”訂閱 /取消訂閱代理;第二,事件只能在本類內(nèi)部“觸發(fā)”,委托不管在本類內(nèi)部還是外部都可以“調(diào)用”。即:事件,只有本類才能激發(fā)這個(gè)事件。

C#是面向?qū)ο蟮氖录?qū)動(dòng)的編程工具,.net Framework的事件機(jī)制使得編程更加快捷簡(jiǎn)便。大部分初學(xué)者在使用系統(tǒng)控件的各種事件時(shí)都熟悉得很快,但在對(duì)自定義事件的具體定義、訂閱以及觸發(fā)過程卻往往一知半解。下面我們就利用數(shù)據(jù)傳遞過程簡(jiǎn)單介紹事件的處理步驟。

在本例中當(dāng)從窗體Form2中的滑動(dòng)條發(fā)生滑動(dòng)后,立即向主窗體發(fā)生當(dāng)前value屬性值作為標(biāo)簽字號(hào),因此需要首先定義一個(gè)委托類型,然后在Form2中定義一個(gè)關(guān)于該委托類型的事件,并在滑動(dòng)條的滑動(dòng)事件處理過程中觸發(fā)該事件。

public delegate void sendfontsize(int fs);//聲明委托,代表無返回值,參數(shù)為整型的函數(shù)

public partial class Form2:Form

{public event sendfontsize send;//定義事件,為上述委托類型

5.結(jié)論

由于C#的開發(fā)工具Visual Studio功能過于強(qiáng)大,在方便我們編程工作的同時(shí),也隱藏了許多相對(duì)基礎(chǔ)的底層概念及操作,使得許多初學(xué)者對(duì)面向?qū)ο蟮脑S多概念更難以理解其中的具體定義及使用過程,希望本文能對(duì)讀者有所幫助,加深對(duì)相關(guān)概念的理解。

[1](美)Stephen C.Perry著.C#和.NET核心技術(shù)[M].肖斌,王小振等譯.北京:機(jī)械工業(yè)出版社,2007.

[2]明日科技編著.Visual C#開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007.

[3]蘇杭麗.C#中數(shù)據(jù)傳遞方式的教學(xué)模型設(shè)計(jì)[J].計(jì)算機(jī)時(shí)代,2011,(03).

猜你喜歡
窗體字號(hào)控件
黃山徽字號(hào)雕刻有限公司
秀江南(2022年2期)2022-04-29 00:44:03
實(shí)施農(nóng)產(chǎn)品質(zhì)量提升行動(dòng) 擦亮?xí)x字號(hào)特優(yōu)農(nóng)業(yè)品牌
規(guī)范“消字號(hào)”產(chǎn)品 增強(qiáng)用藥安全
公民與法治(2020年7期)2020-05-11 02:14:26
試談Access 2007數(shù)據(jù)庫(kù)在林業(yè)檔案管理中的應(yīng)用
檔案天地(2019年5期)2019-06-12 05:12:02
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
關(guān)于企業(yè)字號(hào)權(quán)及其保護(hù)的法律思考
法制博覽(2017年18期)2017-01-27 00:07:34
基于LayeredWindow的異形窗體局部刷新
中文信息(2014年2期)2014-03-06 23:49:14
巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
就這樣玩會(huì)VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
WinCE.net下圖形用戶界面的開發(fā)
于田县| 集贤县| 日喀则市| 西盟| 元江| 昌邑市| 灵寿县| 共和县| 喜德县| 增城市| 富蕴县| 桓台县| 花垣县| 双桥区| 丘北县| 长武县| 阿鲁科尔沁旗| 莆田市| 南汇区| 建平县| 宁波市| 镶黄旗| 合水县| 砚山县| 汉寿县| 周宁县| 凉山| 增城市| 泰来县| 贵港市| 克拉玛依市| 资中县| 历史| 大宁县| 三门峡市| 台安县| 福建省| 富裕县| 邢台县| 商南县| 潮州市|