C#通過反射開啟相應表單方法

來源:互聯網
上載者:User

標籤:event   doc   show   forms   使用   方便   動態載入   path   click   

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或者是其他屬性都可以。總之肯定比你一個一個的去寫要方便很多

 

C#通過反射開啟相應表單方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.