亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#通過反射打開相應(yīng)窗體方法分享

 更新時間:2015年05月18日 08:43:47   投稿:hebedich  
本文章來給各位同學(xué)介紹關(guān)于C#單擊菜單欄或工具欄時通過反射打開窗體的方法,有需要了解的朋友可進(jìn)入?yún)⒖紖⒖肌?/div>

C#單擊菜單欄或工具欄時通過反射打開窗體的方法,可以以取代長長的if-else或switch-case語句。要點:將菜單或工具欄項的名稱設(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); //注意: 窗體命  名空間后面一定要加一個點
   form.MdiParent = this; //如果是Mdi窗體的話請加這一行
   form.Show();
}

如果我們的一個窗體里有N個窗體,或者是有一Tree需要對應(yīng)的調(diào)用N個窗體話,如果使用IF ELse方法可能會很麻煩,

一般可能我會們這樣寫 

private void button3_Click(object sender, EventArgs e)
    {
      //獲取單擊的Button名稱
      string btnname = ((Button)sender).Name;
      if (btnname == "button1")
      {
        //處理窗體
      }
      else if (btnname == "button2")
      {
        //處理窗體
      }
      else
      {
        //處理窗體
      }
    }

這樣也不是不可 行,但是如果100多個上千個就不行了,
可以說超過10個就不好玩了,但是如果使用反射就很方便 ,只需要幾行代碼就可以的,
看下面的方法吧

/// <summary> 
    /// 打開新的子窗體 
    /// </summary> 
    /// <param name="strName">窗體的類名</param> 
    /// <param name="AssemblyName">窗體所在類庫的名稱</param>  
    public static void CreateForm(string strName, string AssemblyName)
    {
      string path = AssemblyName;//項目的Assembly選項名稱 
      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和窗體的類名一樣就可能實現(xiàn)動態(tài)加載了,當(dāng)然如果有的同志說我的Text要用漢字怎么辦,那就再換個屬性啊,比如Name或者是其他屬性都可以。總之肯定比你一個一個的去寫要方便很多

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • C#?中的partial?關(guān)鍵字詳解

    C#?中的partial?關(guān)鍵字詳解

    這篇文章主要介紹了C#?中的partial?關(guān)鍵字,partial 關(guān)鍵字用于拆分一個類、一個結(jié)構(gòu)、一個接口或一個方法的定義到兩個或更多的文件中,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • C#生成隨機(jī)字符串的實例

    C#生成隨機(jī)字符串的實例

    本文介紹了“C#生成隨機(jī)字符串的實例”,需要的朋友可以參考一下
    2013-03-03
  • 利用WPF實現(xiàn)Windows屏保的制作

    利用WPF實現(xiàn)Windows屏保的制作

    屏保程序的本質(zhì)上就是一個Win32?窗口應(yīng)用程序。本文將利用WPF實現(xiàn)Windows屏保的制作,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)WPF有一定幫助,感興趣的可以了解一下
    2022-07-07
  • asp.net新聞列表生成靜態(tài)頁之批量和單頁生成

    asp.net新聞列表生成靜態(tài)頁之批量和單頁生成

    web程序的高訪問量、大數(shù)據(jù)量、高效的用戶體驗度,使靜態(tài)頁技術(shù)在越來越多的網(wǎng)站上發(fā)揮作用。這篇文章主要介紹asp.net新聞列表生成靜態(tài)頁之批量和單頁生成,有需要的朋友可以參考下
    2015-08-08
  • DataGridView清除顯示的數(shù)據(jù)、設(shè)定右鍵菜單

    DataGridView清除顯示的數(shù)據(jù)、設(shè)定右鍵菜單

    這篇文章介紹了DataGridView清除顯示的數(shù)據(jù)、設(shè)定右鍵菜單的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • C#中如何將MongoDB->RunCommand結(jié)果映射到業(yè)務(wù)類的方法總結(jié)

    C#中如何將MongoDB->RunCommand結(jié)果映射到業(yè)務(wù)類的方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于C#中如何將MongoDB->RunCommand結(jié)果映射到業(yè)務(wù)類的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2018-04-04
  • C#基于數(shù)據(jù)庫存儲過程的AJAX分頁實例

    C#基于數(shù)據(jù)庫存儲過程的AJAX分頁實例

    這篇文章主要介紹了C#基于數(shù)據(jù)庫存儲過程的AJAX分頁實現(xiàn)方法,以實例形式詳細(xì)講述了數(shù)據(jù)庫存儲過程的定義、數(shù)據(jù)庫的訪問及Ajax的實現(xiàn)技巧,需要的朋友可以參考下
    2015-01-01
  • C#實現(xiàn)遞歸調(diào)用的Lambda表達(dá)式

    C#實現(xiàn)遞歸調(diào)用的Lambda表達(dá)式

    這篇文章介紹了C#實現(xiàn)遞歸調(diào)用的Lambda表達(dá)式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 深入理解c#多態(tài)

    深入理解c#多態(tài)

    這篇文章主要介紹了c#多態(tài)的相關(guān)知識,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 超炫酷的WPF實現(xiàn)Loading控件效果

    超炫酷的WPF實現(xiàn)Loading控件效果

    這篇文章主要介紹了超炫酷的WPF實現(xiàn)Loading控件效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-11-11

最新評論