C#通過反射打開相應(yīng)窗體方法分享
C#單擊菜單欄或工具欄時(shí)通過反射打開窗體的方法,可以以取代長(zhǎng)長(zhǎng)的if-else或switch-case語(yǔ)句。要點(diǎn):將菜單或工具欄項(xiàng)的名稱設(shè)置為與相應(yīng)窗體名稱相同(關(guān)鍵)。
private void MenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem menuItem = (ToolStripMenuItem)sender;
Form form = (Form)Assembly.Load(“您的程序集名稱”).CreateInstance(“窗體命名空間. “+ menuItem.Name); //注意: 窗體命 名空間后面一定要加一個(gè)點(diǎn)
form.MdiParent = this; //如果是Mdi窗體的話請(qǐng)加這一行
form.Show();
}
如果我們的一個(gè)窗體里有N個(gè)窗體,或者是有一Tree需要對(duì)應(yīng)的調(diào)用N個(gè)窗體話,如果使用IF ELse方法可能會(huì)很麻煩,
一般可能我會(huì)們這樣寫
private void button3_Click(object sender, EventArgs e)
{
//獲取單擊的Button名稱
string btnname = ((Button)sender).Name;
if (btnname == "button1")
{
//處理窗體
}
else if (btnname == "button2")
{
//處理窗體
}
else
{
//處理窗體
}
}
這樣也不是不可 行,但是如果100多個(gè)上千個(gè)就不行了,
可以說超過10個(gè)就不好玩了,但是如果使用反射就很方便 ,只需要幾行代碼就可以的,
看下面的方法吧
/// <summary>
/// 打開新的子窗體
/// </summary>
/// <param name="strName">窗體的類名</param>
/// <param name="AssemblyName">窗體所在類庫(kù)的名稱</param>
public static void CreateForm(string strName, string AssemblyName)
{
string path = AssemblyName;//項(xiàng)目的Assembly選項(xiàng)名稱
string name = strName; //類的名字
Form doc = (Form)Assembly.Load(path).CreateInstance(name);
doc.Show();
}
private void button1_Click(object sender, EventArgs e)
{
//獲取單擊的Button名稱
string btnname = ((Button)sender).Text;
CreateForm("WindowsFormsApplication1." + btnname, "WindowsFormsApplication1");
}
有了上面的方法,只要我們的用戶控件Text和窗體的類名一樣就可能實(shí)現(xiàn)動(dòng)態(tài)加載了,當(dāng)然如果有的同志說我的Text要用漢字怎么辦,那就再換個(gè)屬性啊,比如Name或者是其他屬性都可以??傊隙ū饶阋粋€(gè)一個(gè)的去寫要方便很多
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- C#實(shí)現(xiàn)打開畫圖的同時(shí)載入圖片、最大化顯示畫圖窗體的方法
- C#實(shí)現(xiàn)由四周向中心縮小的窗體退出特效
- C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
- C#實(shí)現(xiàn)winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法
- C#非矩形窗體實(shí)現(xiàn)方法
- C#透明窗體實(shí)現(xiàn)方法
- c#窗體傳值用法實(shí)例詳解
- C#中登錄窗體和歡迎窗體關(guān)閉方法分析
- C#設(shè)置窗體最大化且不遮擋任務(wù)欄的方法
- C#窗體傳值實(shí)例匯總
- C#實(shí)現(xiàn)將窗體固定在顯示器的左上角且不能移動(dòng)的方法
相關(guān)文章
C# 使用Fiddler捕獲本地HttpClient發(fā)出的請(qǐng)求操作
這篇文章主要介紹了C# 使用Fiddler捕獲本地HttpClient發(fā)出的請(qǐng)求操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10
使用HttpHanlder處理404:File not found的問題
本篇文章小編為大家介紹。使用HttpHanlder處理404:File not found的問題。需要的朋友參考下2013-04-04
C#實(shí)現(xiàn)Word轉(zhuǎn)換TXT的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)Word轉(zhuǎn)換TXT的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
C#環(huán)形緩沖區(qū)(隊(duì)列)完全實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了C#環(huán)形緩沖區(qū)(隊(duì)列)完全實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-07-07
使用C#實(shí)現(xiàn)在word中插入頁(yè)眉頁(yè)腳的方法
這篇文章主要介紹了使用C#實(shí)現(xiàn)在word中插入頁(yè)眉頁(yè)腳的方法,是操作Word的常見方法,有一定的學(xué)習(xí)借鑒價(jià)值,需要的朋友可以參考下2014-08-08

