最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

C#單擊菜單欄或工具欄時(shí)通過反射打開窗體的方法,可以以取代長長的if-else或switch-case語句。要點(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">窗體所在類庫的名稱</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è)的去寫要方便很多

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

相關(guān)文章

最新評(píng)論

镇安县| 太原市| 德安县| 邹平县| 新安县| 孝义市| 咸宁市| 宁晋县| 贵州省| 上饶市| 鹤峰县| 都安| 澄城县| 鹿邑县| 德阳市| 博乐市| 林甸县| 溧水县| 卢氏县| 肥东县| 庆阳市| 临洮县| 当雄县| 阳春市| 南阳市| 靖江市| 霸州市| 黄陵县| 得荣县| 罗田县| 射洪县| 社旗县| 隆尧县| 金川县| 揭东县| 松阳县| 南宫市| 新兴县| 海盐县| 婺源县| 申扎县|