元件與控制項之問答 Q A

2021-06-05 19:29:59 字數 1595 閱讀 7548

這就是控制項和元件之間產生混淆之所在。因為為了解決控制項的可復用問題,所有這些技術必須首先解決更為一般的元件重用問題。(com,如果你還記得它的話,意思是元件物件模型)。在軟體行話中,元件這個術語指任何可復用的物件或任何可與其它物件互動的**體。子程式的發明,曾經一度成為程式設計師趨之若鶩的軟體工程聖杯:一種統一的程式設計理論,它使程式設計師從基本構建塊——也就是用所選語言編寫的各種元件建立大型系統。從子程式演變到oop,到dlls,再到com,再到.net框架的每一種新的程式設計範例都代表了一種不同的提供可重用性的方案。vbx使用dlls的固化名稱。com使用介面和iunknown。.net框架使用微軟的中間語言(msil)層和公共語言執行時(clr)來提供統一的粘合。

因此,控制項是元件的乙個主要樣本(並且歷史上曾驅動著元件的開發),控制項又不僅僅是唯一的一種元件。元件不需要顯示任何資訊或使用者介面。元件可能實現科學計算,收集效能資料,計算2023年1月1日到現在的毫秒數,仰或是讀取布希**競選活動保險箱裡的美金數。figure 4 顯示了 visual studio .net 中的非控制項元件例子。

figure 4 元件

在 .net 框架中,術語控制項和元件為 .net 賦予了專門的意義。component 類為被用於設計層面的物件如 windows forms designer (windows 窗體設計器)或 web forms designer (web 窗體設計器)提供了基本實現。某個 component 是任何可以被拽到某個窗體的任何東西。component 類實現icomponent,isite 和 icontainer。這些介面比起其來自 ole 時期的 com 堂兄弟要簡單得多。 icontainer 比起帶有 add/remove 方法的元件列表以及元件屬性來要稍微複雜一點,它獲得的元件是乙個 componentcollection (元件集合)。

icomponent 從 idisposable 派生而來,並且只有乙個屬性,site,獲取元件的isite介面。component 可能有,也可能沒有site。isite 有四個屬性,其中包括name和designmode,它控制該元件是否處於——還能是什麼?——設計模式。isite 派生於另乙個介面,iserviceprovider,它只有乙個方法,getservice。在com中,iserviceprovider 類似 queryinte***ce——用它可以通過id來查詢某個物件的介面,但是與 queryinte***ce 不同的是該物件本身不用去實現這個介面,它僅僅知道在**和如何獲取它即可。同樣,在.net框架中,iserviceprovider 是一種獲取其它介面或物件的通用方法——服務——物件不用實現它就知道的一種服務。

.net框架使得編寫可復用元件輕鬆自如,不再需要 idl,不再需要型別定義語言,不再需要費力的設計時支援。通過反射(reflection)的魔法,clr 從**本身就已經知道了該知道的一切,所有的類都在掌控之中。為了新增設計時支援,你只要用額外的設計器標記你的屬性即可。例如,在託管c++中:

// in cmycontrol

[description(s"specifies widget foreground color.")]

_property color get_forecolor()

_property void set_forecolor(color value)

控制項與元件

adobe flex 支援元件開發模型,通常情況下,我們使用 flex 中預定義的元件,根據需求開發應用程式。當預定義元件不能 滿足需求時,我們還可以建立自定義元件來構建應用程式。在軟體行業中,一般把 component 翻譯為 元件 把 control 翻譯為 控制項 其中,術語 元件 指任何可復...

(64)元件之控制項元件

使用控制項元件,您可以在遊戲世界中顯示那些通過unreal motion graphics建立的 3d ui 元素。widgetcomponent本身是控制項元件藍圖 widget blueprint 的乙個 3d 例項,您可以在遊戲世界中與它進行互動。在下面的示例中,我們新增了乙個 widgetc...

React Native控制項之Text元件介紹

基本用法 text元件是react中的乙個基本元件,這個和ios上的uilabel與android上的textview元件相類似,就是用來顯示文字的,這個空間除了基本的顯示布局之外,可以巢狀使用,設定樣式,新增事件處理功能。下面我們給出乙個簡答的例子 use strict import react,...