我正在开发一个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;
}
}
}
}
答案 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
。