2014-02-12 99 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繼承。

相關問題