代码如下,我现在要判断十多个窗口,再一个个显示出来,如何用一句代码实现所有的子窗口全部重新加载load一次呀?类似 frm_main_Load(sender, e); 目前用的是销毁子窗体,重新打开,能否不销毁,直接重截每一个子窗体呀?
因为我作的多国语言,选择一种语言,所有的窗口都要重新加载一次才能变换语言。
frm_buy f1 = new frm_buy();
frm_lct f2 = new frm_lct();
...省略十几个窗口
foreach (Form frm in this.MdiChildren)//遍历已打开的所有子窗体
{
if (frm.Name == f1.Name)
{
frm.Dispose();
f1.MdiParent = this;//设置父窗体
f1.Show();
}
else if (frm.Name == f2.Name)
{
frm.Dispose();
f2.MdiParent = this;//设置父窗体
f2.Show();
}
...省略十几个窗口 }
因为我作的多国语言,选择一种语言,所有的窗口都要重新加载一次才能变换语言。
frm_buy f1 = new frm_buy();
frm_lct f2 = new frm_lct();
...省略十几个窗口
foreach (Form frm in this.MdiChildren)//遍历已打开的所有子窗体
{
if (frm.Name == f1.Name)
{
frm.Dispose();
f1.MdiParent = this;//设置父窗体
f1.Show();
}
else if (frm.Name == f2.Name)
{
frm.Dispose();
f2.MdiParent = this;//设置父窗体
f2.Show();
}
...省略十几个窗口 }
/// 根据窗体名称获取窗体实例
/// </summary>
/// <param name="frmName"></param>
/// <returns></returns>
public object GetForms(string frmName)
{
object result = null;
if (this.ListForms.Contains(frmName) && (this.ListForms[frmName] as Form).IsDisposed)
{
this.ListForms.Remove(frmName);
} if (this.ListForms.Contains(frmName))
{
result = this.ListForms[frmName];
}
else
{
result = Assembly.Load("UI").CreateInstance("UI.Sub." + frmName);
this.ListForms.Add(frmName, result);
}
return result;
}这个是我用的部分代码,那里面的this.ListForms就是全部的已打开窗口,循环一下就可以了