国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

Visual Basic .NET 中動態(tài)加載類(一)

2024-07-10 13:04:29
字體:
供稿:網(wǎng)友
visual basic .net 中動態(tài)加載類

· ··microsoft

 摘要:理想情況下,編寫軟件系統(tǒng)之前我們就應(yīng)該知道此軟件系統(tǒng)需要完成哪些操作。但實際情況并非如此,因此我們的系統(tǒng)應(yīng)該是可以調(diào)整的。

  最能體現(xiàn)這種適應(yīng)性的是動態(tài)集成新功能的能力。例如,在 windows 窗體應(yīng)用程序中,這種能力是指加載編譯原始應(yīng)用絳蠔芫靡院蟠唇ǖ拇疤宓哪芰α?/p>

  這種操作在 microsoft visual basic® 6.0 中幾乎是不可能的,但是在 visual basic .net 中卻相當(dāng)容易。利用 system.reflection 命名空間的功能,程序只需知道程序集的位置即可請求動態(tài)加載該程序集。然后即可加載該程序集中的類并對類進行實例化。由于 windows 窗體也是一種類,這就意味著可以動態(tài)地加載、顯示和使用窗體,即使在編譯原始程序時窗體并不存在。

  典型的方案
  假設(shè)我們有一個多文檔界面 (mdi) 應(yīng)用程序,需要具有將任意窗體加載為子窗體的能力。那么應(yīng)用程序應(yīng)該能夠執(zhí)行以下操作:

獲取可以加載的窗體的列表,通常不在 .net 配置文件中。
顯示該列表并允許用戶從中選擇一個窗體。
實例化并顯示用戶選擇的窗體。
  讓我們編寫這樣一個應(yīng)用程序,看看如何完成動態(tài)加載。

  步驟 1:創(chuàng)建項目和 mdi 窗體
  啟動一個新的 windows 窗體項目。將其命名為 formsonthefly。在新項目中包含的空窗體 form1 中,將它的 ismdicontainer 屬性更改為 true。這樣,該窗體即變成一個 mdi 父窗體。更改窗體的大小,使窗體的長和寬的尺寸大約為默認值的兩倍。

  將一個面板控件拖動到窗體上,然后設(shè)置它的 dock 屬性,使它靠接在窗體的頂部。更改面板的大小,使它的高度大約為 0.5 英寸。

  將一個組合框拖動到面板上。將它命名為 cboforms,然后將它的 dropdownstyle 設(shè)置為 dropdownlist。

  最后,將一個按鈕拖動到面板上。將它命名為 btnloadform,然后將它的 text 屬性設(shè)置為 load form。

  此時,form1 應(yīng)如圖 1 所示。



圖 1:添加所有控件后處于設(shè)計模式下的 mdi 窗體

  步驟 2:生成一個類,以存放可用窗體的數(shù)據(jù)
  我們將獲取可能從基于 xml 的配置文件之外加載的窗體的有關(guān)信息。但是,為了更便于在組合框中顯示可用窗體并獲取有關(guān)所選窗體的信息,還應(yīng)建立一個對象集合。集合中的每個對象都將存放一個可用窗體的信息。對象應(yīng)具有以下屬性:

description:顯示在組合框中的窗體說明。
location:窗體所在的 dll 的文件名。
type:窗體的 .net 類型的名稱(例如,myproject.form1)。
  這樣的集合可以數(shù)據(jù)綁定到列表框中。要從列表框中返回對所選對象的引用,還需要一個屬性,我們稱之為 reference。

  要創(chuàng)建類,請選擇 project | add class(項目|添加類),然后將類命名為 dynamicclass.vb。在類中添加以下代碼:

public class dynamicclass
dim mslocation as string
dim mstype as string
dim msdescription as string

public sub new(byval slocation as string, _
byval sdescription as string, _
byval stype as string)
me.location = slocation
me.description = sdescription
me.type = stype
end sub

public property location() as string
get
return mslocation
end get
set(byval value as string)
mslocation = value
end set
end property

public property type() as string
get
return mstype
end get
set(byval value as string)
mstype = value
end set
end property

public property description() as string
get
return msdescription
end get
set(byval value as string)
msdescription = value
end set
end property

public readonly property reference() as object
get
return me
end get
end property
end class


最大的網(wǎng)站源碼資源下載站,

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东辽县| 加查县| 凭祥市| 英德市| 麦盖提县| 启东市| 浦东新区| 仁怀市| 东平县| 汝阳县| 双鸭山市| 雷波县| 开鲁县| 大厂| 固原市| 富民县| 常宁市| 鸡西市| 西和县| 启东市| 新津县| 太仓市| 永修县| 城步| 兰溪市| 平塘县| 英德市| 临洮县| 民勤县| 瓦房店市| 锦州市| 阿鲁科尔沁旗| 双流县| 武义县| 应用必备| 白玉县| 松阳县| 宁明县| 名山县| 靖边县| 乌什县|