c 在winform中 通過反射動態的建立窗體

2021-09-19 05:41:24 字數 1188 閱讀 4925

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.windows.forms;

using lyhrservice;

using system.configuration;

using system.reflection;

void tsmchild_click(object sender, eventargs e)

這裡frmpath是從資料庫中得到的路徑 就是把窗體的類名(命名空間+類名)儲存到資料庫中

主要通過assembly這個類

//獲取當前程式集的名稱

string assemblyname = assembly.getexecutingassembly().getname().name;

//獲取要建立窗體的程式集的名稱這裡需要命名空間+類名

string classname = assemblyname + "." + frmpath;

這裡的類名 是程式集名稱(就是命名空間的名稱)+類名

如:程式集是lywinform 命名空間:userinfo.userinfoadd

classname=lywinform.userinfo.userinfoadd 其中userinfo是建立專案中的乙個資料夾,userinfoadd窗體放在了這個資料夾下

//通過反射獲取當前要展示的窗體

通過黎克特制替換原則建立出子窗體

form frmshow = getcurrentform(assemblyname, classname);

frmshow.showdialog();

}/// /// 根據反射獲得當前要顯示的窗體

///

/// 當前程式集名稱

/// 獲得當前類的名稱命名空間+類名的全部字元

/// 返回當前顯示的窗體

private form getcurrentform(string assemblyname, string classname)

C 通過反射呼叫方法

用反射呼叫方法 常用於軟體架構中 假如你定義好了基類和介面,其他人使用基類派生出新的方法,你在不知道有多少類會使用此基類派生,但是你需要呼叫所有的派生類的方法時,就可以這樣,直接遍歷相同命名空間中的由基類派生的所有類,然後例項化所有類,呼叫所有方法 using system using system...

C 在WinForm開發中Label換行方法

第一種是把label的autosize屬性設為false,手動修改label的大小.這樣的好處是會因內容的長度而自動換行,但是當內容的長度超過所設定的大小時,多出的內容就會無法顯示.因此,這種方法適合於基本確定內容長度的時候使用。第二種是把label的dock設為fill,同時將autosize屬性...

C 在WinForm開發中Label換行方法

第一種是把label的autosize屬性設為false,手動修改label的大小.這樣的好處是會因內容的長度而自動換行,但是當內容的長度超過所設定的大小時,多出的內容就會無法顯示.因此,這種方法適合於基本確定內容長度的時候使用。第二種是把label的dock設為fill,同時將autosize屬性...