2014-02-12 61 views
0

我正在开发一个实用类以建立一些常用功能。是否可以进行OOP转换

其中一个函数尝试自定义窗体表单属性。 该函数接受一个参数,它应该是一个窗体参考变量,然后它自定义它的布局。

问题是,窗体窗体是不同的对象类型,例如, Form1,Form2,...等 因此,我无法确定我应该在函数中使用哪种对象类型。
例如是公共静态无效SetFormAttributes(REF ??? targetForm)

的代码如下:

void btn_show_Click(object sender, EventArgs e) 
    { 
     this.pnl_ShowForms.Controls.Clear(); 
     int tag = Convert.ToInt32((sender as Button).Tag); 
     switch (tag) 
     { 
      case 1: 
       Form1 frm1 = new Form1(); 
       Utilities.SetFormAttributes(ref frm1); 
       this.pnl_ShowForms.Controls.Add(frm1); 
       frm1.Show(); 
       break; 
      case 2: 
       Form2 frm2 = new Form2(); 
       Utilities.SetFormAttributes(ref frm2);     
       this.pnl_ShowForms.Controls.Add(frm2); 
       frm2.Show(); 
       break; 
      case 3: 
       Form3 frm3 = new Form3(); 
       Utilities.SetFormAttributes(ref frm3); 
       this.pnl_ShowForms.Controls.Add(frm3); 
       frm3.Show(); 
       break; 
     } 
    } 


namespace WFA_ShowFormsInPanel 
{ 
public static class Utilities 
{ 
    public static void SetFormAttributes(ref ??? targetForm) 
    { 

     { 
      targetForm.FormBorderStyle = FormBorderStyle.None; 
      targetForm.Dock = DockStyle.Fill; 
      targetForm.WindowState = FormWindowState.Maximized; 
      targetForm.TopLevel = false; 
     }  
     } 
    } 
} 
+0

为什么ref? (添加填充符合最小注释大小要求) –

+0

我已经测试了代码建议,它的工作原理。 但是,为什么ref不是必需的?我是面向对象的新手,我认为如果我想改变原始对象,我必须通过引用。任何点击或链接解释这将非常感激。 – Alvin

回答

3

所有窗体从基Form类继承,所以在SetFormAttributes使用这种类型。

作为边注,作为Form是一个对象(因此参考型),使用ref通过它由于不需要的参数。

0

你的方法更改为

public static class Utilities 
{ 
    public static void SetFormAttributes(Form targetForm) 
    { 

     { 
      targetForm.FormBorderStyle = FormBorderStyle.None; 
      targetForm.Dock = DockStyle.Fill; 
      targetForm.WindowState = FormWindowState.Maximized; 
      targetForm.TopLevel = false; 
     }  
     } 
} 

由于所有的Windows窗体将从Form继承。

相关问题