现在代码protected void Btn1_Click(object sender,EventArgs e)
{
  Form1 f1=new Form1();
  f.show(dockPanel);
}
protected void Btn2_Click(object sender,EventArgs e)
{
  Form2 f2=new Form2();
  f2.show(dockPanel);
}
.
.
.
protected void Btn10_Click(object sender,EventArgs e)
{
  Form10 f10=new Form10();
  f10.show(dockPanel);
}如何将上述方法体里面的代码用一个共用方法(带参数)进行替换

解决方案 »

  1.   

    public void FormShow(Form f)
    {
        f.Show(dockPanel);
    }
    protected void Btn10_Click(object sender,EventArgs e)
    {
         Form10 f = new Form10()
         this.FormShow( f);
    }
      

  2.   


            private void ShowDock<T>() where T: Form,new()
            {
                T frm = new T();
                frm.Show();
            }
    调用
    protected void Btn10_Click(object sender,EventArgs e)
    {
      ShowDock<Form10>();
    }
      

  3.   

    这个复用用泛型没有意义 C#的泛型不像其他代码一样高度编译 而是浅编译到虚拟机上运行  效率并不可观  
    而且代码超过5行以上再重构 频繁使用的常量则用抽取  其他的 随便写个方法应付一下就好了 
    像一楼的就可以public void FormShow(Form f)
    {
      f.Show(dockPanel);
    }
    protected void Btn10_Click(object sender,EventArgs e)
    {
      this.FormShow(new Form10());
    }
     
    2楼的不可取 不建议使用题外话  
    T frm = new T();
    最好是写成
    T frm = default(T);