程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#經由過程反射翻開響應窗體辦法分享

C#經由過程反射翻開響應窗體辦法分享

編輯:C#入門知識

C#經由過程反射翻開響應窗體辦法分享。本站提示廣大學習愛好者:(C#經由過程反射翻開響應窗體辦法分享)文章只能為提供參考,不一定能成為您想要的結果。以下是C#經由過程反射翻開響應窗體辦法分享正文


C#單擊菜單欄或對象欄時經由過程反射翻開窗體的辦法,可以以代替長長的if-else或switch-case語句。要點:將菜單或對象欄項的稱號設置為與響應窗體稱號雷同(症結)。

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須要對應的挪用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和窗體的類名一樣便可能完成靜態加載了,固然假如有的同志說我的Text要用漢字怎樣辦,那就再換個屬性啊,好比Name或許是其他屬性都可以。總之確定比你一個一個的去寫要便利許多

以上所述就是本文的全體內容了,願望年夜家可以或許愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved