form1,form2,form3.....
现在要写一个函数函数void showForm(Form frm)
能实现showForm(form1)就显示form1吗,showForm(form2)就显示form2吗.....?
8 个解决方案
#1
class Form1:Form{}
class Form2:Form{}
class Form3:Form{}
void ShowForm(Form frm)
{
frm.Show();
}
调用的地方
ShowForm(new Form1); //显示Form1
ShowForm(new Form2); //显示Form2
不过这样做太多此一举了吧
class Form2:Form{}
class Form3:Form{}
void ShowForm(Form frm)
{
frm.Show();
}
调用的地方
ShowForm(new Form1); //显示Form1
ShowForm(new Form2); //显示Form2
不过这样做太多此一举了吧
#2
可以啊,这个就是多态的特性啊.只要他们是继承自同一个基类的就可以了.就是按照你说的那样就可以,参数是Form类型的.
#3
用反射!
/// <param name="GetDllPath">DLL文件路径</param>
/// <param name="MethodName">你的FORM1,FORM2,的类名称,但是要完整</param>
public static void ShowFormByName(string GetDllPath,string FormClassName)
{
System.Security.Policy.Evidence e = new System.Security.Policy.Evidence();
Assembly l = System.Reflection.Emit.AssemblyBuilder.LoadFile(GetDllPath);
object temp = l.CreateInstance(FormClassName, false, BindingFlags.Default, null, null, null, null);
((Form)temp).Show();
}
/// <param name="GetDllPath">DLL文件路径</param>
/// <param name="MethodName">你的FORM1,FORM2,的类名称,但是要完整</param>
public static void ShowFormByName(string GetDllPath,string FormClassName)
{
System.Security.Policy.Evidence e = new System.Security.Policy.Evidence();
Assembly l = System.Reflection.Emit.AssemblyBuilder.LoadFile(GetDllPath);
object temp = l.CreateInstance(FormClassName, false, BindingFlags.Default, null, null, null, null);
((Form)temp).Show();
}
#4
private void showForm(Form frm)
{
this.mainPanel.Controls.Clear();
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Parent = mainPanel;
frm.Show();
this.Text = frm.Text;
}
showForm(frmStock );
我这样写为什么不对,帮忙看一下...
其中(frmStock)是已经存在的一个form窗体!!
#5
错误 1 “test.frmStock”是“类型”,但此处被当做“变量”来使用
报这个错误
报这个错误
#6
up
#7
自己解决了啊!!结贴了.提了一个很幼稚的问题.....
#8
mainPanel?你想把窗体放在面板里面?好像不行吧,你可以试试MDI
先把主窗体的IsMdiContainer设置为true
private void showForm(Form frm)
{
frm.MdiParent = this;
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Show();
this.Text = frm.Text;
}
先把主窗体的IsMdiContainer设置为true
private void showForm(Form frm)
{
frm.MdiParent = this;
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Show();
this.Text = frm.Text;
}
#1
class Form1:Form{}
class Form2:Form{}
class Form3:Form{}
void ShowForm(Form frm)
{
frm.Show();
}
调用的地方
ShowForm(new Form1); //显示Form1
ShowForm(new Form2); //显示Form2
不过这样做太多此一举了吧
class Form2:Form{}
class Form3:Form{}
void ShowForm(Form frm)
{
frm.Show();
}
调用的地方
ShowForm(new Form1); //显示Form1
ShowForm(new Form2); //显示Form2
不过这样做太多此一举了吧
#2
可以啊,这个就是多态的特性啊.只要他们是继承自同一个基类的就可以了.就是按照你说的那样就可以,参数是Form类型的.
#3
用反射!
/// <param name="GetDllPath">DLL文件路径</param>
/// <param name="MethodName">你的FORM1,FORM2,的类名称,但是要完整</param>
public static void ShowFormByName(string GetDllPath,string FormClassName)
{
System.Security.Policy.Evidence e = new System.Security.Policy.Evidence();
Assembly l = System.Reflection.Emit.AssemblyBuilder.LoadFile(GetDllPath);
object temp = l.CreateInstance(FormClassName, false, BindingFlags.Default, null, null, null, null);
((Form)temp).Show();
}
/// <param name="GetDllPath">DLL文件路径</param>
/// <param name="MethodName">你的FORM1,FORM2,的类名称,但是要完整</param>
public static void ShowFormByName(string GetDllPath,string FormClassName)
{
System.Security.Policy.Evidence e = new System.Security.Policy.Evidence();
Assembly l = System.Reflection.Emit.AssemblyBuilder.LoadFile(GetDllPath);
object temp = l.CreateInstance(FormClassName, false, BindingFlags.Default, null, null, null, null);
((Form)temp).Show();
}
#4
private void showForm(Form frm)
{
this.mainPanel.Controls.Clear();
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Parent = mainPanel;
frm.Show();
this.Text = frm.Text;
}
showForm(frmStock );
我这样写为什么不对,帮忙看一下...
其中(frmStock)是已经存在的一个form窗体!!
#5
错误 1 “test.frmStock”是“类型”,但此处被当做“变量”来使用
报这个错误
报这个错误
#6
up
#7
自己解决了啊!!结贴了.提了一个很幼稚的问题.....
#8
mainPanel?你想把窗体放在面板里面?好像不行吧,你可以试试MDI
先把主窗体的IsMdiContainer设置为true
private void showForm(Form frm)
{
frm.MdiParent = this;
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Show();
this.Text = frm.Text;
}
先把主窗体的IsMdiContainer设置为true
private void showForm(Form frm)
{
frm.MdiParent = this;
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Show();
this.Text = frm.Text;
}