c#重新加载主窗体
我想点击子窗体的某一个按钮,(现在的窗体已经有好多变化了,可能有几个窗体打开了),点击后,然后恢复刚加载的时候的样子,只出现第一次运行时的主窗体。有点像刷新,怎么办啊??
因为我在子窗体点击的刷新按钮,//this.Refresh();//和 this.OnLoad(e);
只刷新了现在的子窗口,这两个都不行,我是想出现刚运行的时候,只出现主窗体。
网上说用重新加载,能不能用代码解释一下
例:主窗体form1,按钮buttonShow,点击出现子窗体form2.子窗体的刷新按钮,buttonUpdate。点击重新运行form1.。。。 c#
[解决办法]
遍历主窗体的所有子窗体,把它们都关了不就可以了吗?
[解决办法]
那你自动把程序退出,并用代码启动你的程序
System.Diagnostics.Process.Start(启动你的程序);
Application.Exit(); //退出当前的程序
或者
你在主窗体里写一个初始的方法
这个方法把所有子窗体关闭,并恢复主窗体一开始的位置(这个位置在主窗体起来时记在一个变量里),当你要回复初始时调用此方法
[解决办法]
就winform来说,总要有一个初始窗体。(我们不讨论修改这个窗体的复杂问题)
那么你的所谓“我是想出现刚运行的时候,只出现主窗体”,这个主窗体只能是一个子窗体。
比如说,在你的初始窗体(比如说是登录窗体)中,当登陆完毕,验证用户名密码正确,之后可以写:
void Logon()初始窗体隐藏自身之后,等待主窗体退出则自身也退出。
{
var f = new MainForm();
f.FormClosed += f_FormClosed;
f.Show();
this.Hide();
}
void f_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}
public event EventHandler<EventArgs> Refresh;
private MainForm main;
void Logon()
{
CreateMainForm();
}
private void CreateMainForm()
{
main = new MainForm();
main.FormClosed += f_FormClosed;
main.Refresh += main_Refresh;
main.Show();
this.Hide();
}
void main_Refresh(object sender, EventArgs e)
{
if (main != null)
{
main.FormClosed -= f_FormClosed;
main.Close();
}
CreateMainForm();
}
void f_FormClosed(object sender, FormClosedEventArgs e)
{
this.Close();
}
void OnOpenForm1()
{
subForm = new Form1();
subForm.Refresh += subForm_Refresh;
}
Form1 subForm;
void subForm_Refresh(object sender, EventArgs e)
{
if (subForm != null)
{
subForm.Close();
}
if (this.Refresh != null)
this.Refresh(this, new EventArgs());
}