WINform的程序又登陆窗体
和显示窗体.开发时.时不是显示窗体是主窗体
登陆窗体是副窗体.程序开始时new 一个登陆窗体吧
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new 登陆窗体());
}
当登陆成功了肯定.this.close();来关闭登陆窗体.但是由于登陆窗体的主窗体.一旦关闭.所有的东西都会关闭的.
如果把它设置为透明.这也耗费资源.这个问题请问下高手们时怎么样解决的??
和显示窗体.开发时.时不是显示窗体是主窗体
登陆窗体是副窗体.程序开始时new 一个登陆窗体吧
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new 登陆窗体());
}
当登陆成功了肯定.this.close();来关闭登陆窗体.但是由于登陆窗体的主窗体.一旦关闭.所有的东西都会关闭的.
如果把它设置为透明.这也耗费资源.这个问题请问下高手们时怎么样解决的??
{
//打开登录窗口
LoginForm lg = new LoginForm();
if(lg.ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm());//打开你指定的窗口
}
}
登录窗口(LoginForm)中
在你完成密码验证代码后加上 this.DialogResult=DialogResult.OK;
{
this._mainForm=mainform;
}private string Form _mainForm=null;
public Form MainForm
{
set{_mainForm=value;}
get{return _mainForm;}
}在登录成功的地方,关闭登录窗体时调用:
if(this.MainForm!=null)
{
this.MainForm.Visible=true; //显示
}
this.Close();
在主窗体中,调用显示loginFrm的地方,加载,或者一个事件中都行FrmLogin frm=new FrmLogin(this);
frm.Show();
this.Visible=hidden;
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} private void MainForm_Load(object sender, EventArgs e)
{
LoginForm lf = new LoginForm();
lf.ShowDialog();
this.Hide();
//if login success
WorkForm wf = new WorkForm();
wf.FormClosed += new FormClosedEventHandler(wf_FormClosed);
wf.ShowDialog();
this.Hide();
} void wf_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
}static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
上面打错了
改成下面用Hide()与Show来进行在登录窗体中,构造函数里面加一个参数 public Form FrmLogin(Form mainform)
{
this._mainForm=mainform;
} private string Form _mainForm=null;
public Form MainForm
{
set{_mainForm=value;}
get{return _mainForm;}
} 在登录成功的地方,关闭登录窗体时调用:
if(this.MainForm!=null)
{
MainForm.Show();//显示
}
this.Close();
在主窗体中,调用显示loginFrm的地方,加载,或者一个事件中都行 FrmLogin frm=new FrmLogin(this);
frm.Show();
this.Hide();//用this.Hide();
{
this._mainForm=mainform;
} //默认构造函数
public FrmLogin(){
InitializeComponent();
}或者
public FrmLogin(Form mainform)
{
this._mainForm=mainform;
InitializeComponent();
} public FrmLogin(){
InitializeComponent();
}
{
private static FormControler s_Instance; public static FormControler Instance
{
get
{
if (s_Instance == null)
{
s_Instance = new FormControler();
}
return FormControler.s_Instance;
}
set { FormControler.s_Instance = value; }
}
public void Login()
{
if (FormModel.Instance.LoginStatus == LoginStatus.Fail)
{
Application.Run(new LoginForm());
} if (FormModel.Instance.LoginStatus == LoginStatus.Success)
{
Application.Run(new WorkForm());
}
}
} public class FormModel
{
private static FormModel s_Instance; public static FormModel Instance
{
get
{
if (s_Instance == null)
{
s_Instance = new FormModel();
}
return FormModel.s_Instance;
}
set { FormModel.s_Instance = value; }
} private LoginStatus m_LoginStatus = LoginStatus.Fail; public LoginStatus LoginStatus
{
get { return m_LoginStatus; }
set { m_LoginStatus = value; }
}
} public enum LoginStatus
{
Success,
Fail
}
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new MainForm());
FormControler.Instance.Login();
}
} private void LoginForm_FormClosed(object sender, FormClosedEventArgs e)
{
FormModel.Instance.LoginStatus = LoginStatus.Success;
}