这种OOP转换是否可行

时间:2014-02-12 10:51:06

标签: c# oop

我正在开发一个utilitity类来构建一些常用函数。

其中一个函数尝试自定义窗体形式属性。 该函数接受一个参数,该参数应该是一个窗口形式引用变量,然后它自定义它的布局。

问题是窗体形式是不同的对象类型,例如Form1,Form2,...等 因此,我无法确定我应该在函数中使用哪种对象类型 例如public static void 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;
        }      
      }
   }
}

2 个答案:

答案 0 :(得分:3)

您的所有表单都继承自基础Form类,因此请在SetFormAttributes中使用此类型。

作为旁注,由于Form是一个对象(所以引用类型),因此不需要使用ref作为参数传递它。

答案 1 :(得分: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