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屬性...