c#登录窗体和主窗体之间的关系 主窗体中声明 一个登录窗体的变量,开始时创建,再次显示时,只需要调用 窗体的Show即可 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 主窗体FormClosing事件中Application.Exit();在主窗体中添加启动窗体 属性public Start start{get;set;}启动窗体实例化主窗体后添加MainFor mainFor=new MainFor()mainFor.start=this;这样 重新登录按钮事件 start.show();就可以了 重新登录按钮事件 补充{start.show();this.close();} 这个Start 是从哪里来的? 在主窗体中定义的登录子窗体,当登录子窗体隐藏掉而不是Dispose掉时,是不能关闭主窗体的,因为子窗体还没释放。 可以关闭主窗体。主窗体是通过启动窗体实例化并show出来的 登录窗体:public partial class Frmlogin : Form { public Frmlogin() { InitializeComponent(); } private void btlogin_Click(object sender, EventArgs e) { FrmMain frmmain1 = new FrmMain(this); frmmain1.Show(); this.Hide(); } }主窗体: public partial class FrmMain : Form { Form frmlogin1; bool relogin = false; public FrmMain(Form frmlogin) { InitializeComponent(); frmlogin1 = frmlogin; } private void btRelogin_Click(object sender, EventArgs e) { relogin = true; this.Close(); } private void FrmMain_FormClosing(object sender, FormClosingEventArgs e) { if (relogin) { frmlogin1.Show(); } else { frmlogin1.Close(); } } } 我的登录窗体是这样写的 if (F_main == null || F_main.IsDisposed) { this.Hide(); F_main = new F_Main(this,YGGH, YGXM, BZMC, ZYGX); F_main.Show(); } else { this.Hide(); F_main.Show(); }主窗体初始化这样写:公共变量: Form flogin; bool relogin = false; public F_Main(Form f_login,string userGH, string userName, string userBZ, string ZYGX) { InitializeComponent(); YGGH = userGH; YGXM = userName; BZMC = userBZ; ZY = ZYGX; flogin = f_login3; }主窗体重新登录事件这样写 private void btnReset_Click(object sender, EventArgs e) { if (relogin) { flogin.Show(); } else { flogin.Close(); } }主窗体FormClosing事件这样写。 private void F_Main_FormClosing(object sender, FormClosingEventArgs e) { //Application.Exit(); relogin = true; this.Close(); }我这样是按照13楼的写法。还是不行啊!没有把登录窗体调出来阿! 个人觉得最好别让登陆窗体作为程序的启动窗体,而应当让主窗体作为程序的启动窗体。在登录成功后登陆窗体this.Hide()只是让窗体可见隐藏,其占用内存没有释放,而在相当一段时间内该窗体是无用的。 /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); DialogResult result; using (frmLogin frmLogin = new frmLogin()) { result = frmLogin.ShowDialog(); } if (result == DialogResult.OK) { Application.Run(new frmMain()); } }登陆窗体 public partial class frmLogin : Form { public frmLogin() { InitializeComponent(); } private void btnLogin_Click(object sender, EventArgs e) { bool isLoginOk = false; //登陆逻辑处理...假设成功 isLoginOk=true; if (isLoginOk) { DialogResult = DialogResult.OK; } } }主窗体重新登录: private void btnReLogin_Click(object sender, EventArgs e) { using (frmLogin frmLogin = new frmLogin()) { frmLogin.ShowDialog(); } } ///主窗public class 主窗口:Form {public logonWindow 登录窗口 = new LogonWindow();public 主窗口加载完成后的方法(){登录窗口.closeing+=(s,e)=>{//这里不关闭窗口xx.放弃=true;//忘记怎么写了登录窗口.hide();}; 登录窗口. ShowDialog();}//下次打开再用 登录窗口. ShowDialog(); 就行了} 至于重新登录功能,我那只是简写了,可以根据需要处理的。还有种做法,让程序重新启动即可。 private void btnReLogin_Click(object sender, EventArgs e) { Application.Restart(); } 你写的跟我13楼写的不一样1.主窗体中btnReset_Click的代码和F_Main_FormClosing调转了2.主窗体的构造函数中我注释的那句你写错了。Form flogin; bool relogin = false; public F_Main(Form f_login,string userGH, string userName, string userBZ, string ZYGX) { InitializeComponent(); YGGH = userGH; YGXM = userName; BZMC = userBZ; ZY = ZYGX; flogin = f_login;//flogin=f_login3; } ProgramLoad 登录窗口MainWindow 主窗口登录窗口MainWindow mw = new MainWindow(this);mw.Show(this);this.Visible = false;主窗体变量ProgramLoad mw_programload;主窗口重新登录this.Dispose();mw_programload.Visible = true;主窗口关闭事件private void MainWindow_FormClosed(object sender, FormClosedEventArgs e){ mw_programload.Dispose();} ......少了个public MainWindow(ProgramLoad _form) { InitializeComponent(); mw_programload = _form; } 如何在panel中列表显示查询的数据 自定义类 点击事件 如何动态的生成一个TextBox显示的字符串! appsetting双面映射 c#中如何做象word那样的特殊符号插入工具 新手问个cristal report的问题 请大家帮我解答很菜的问题, .net能做什么的问题,不要笑我 碰上一个爆难的问题,问问大侠们.解决马上结贴. C#中一个项目创建多个windows服务的问题 引用控件问题 如何改变另一个程序中按钮的checked属性? 接着刚才的问题,ASPxGridView的编辑模板
Application.Exit();在主窗体中添加启动窗体 属性
public Start start{get;set;}启动窗体实例化主窗体后添加
MainFor mainFor=new MainFor()
mainFor.start=this;这样 重新登录按钮事件 start.show();就可以了
{
start.show();
this.close();
}
这个Start 是从哪里来的?
{
public Frmlogin()
{
InitializeComponent();
} private void btlogin_Click(object sender, EventArgs e)
{
FrmMain frmmain1 = new FrmMain(this);
frmmain1.Show();
this.Hide();
}
}主窗体: public partial class FrmMain : Form
{
Form frmlogin1;
bool relogin = false;
public FrmMain(Form frmlogin)
{
InitializeComponent();
frmlogin1 = frmlogin;
} private void btRelogin_Click(object sender, EventArgs e)
{
relogin = true;
this.Close();
} private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (relogin)
{
frmlogin1.Show();
}
else
{
frmlogin1.Close();
}
}
}
if (F_main == null || F_main.IsDisposed)
{
this.Hide();
F_main = new F_Main(this,YGGH, YGXM, BZMC, ZYGX);
F_main.Show();
}
else
{
this.Hide();
F_main.Show();
}主窗体初始化这样写:
公共变量: Form flogin;
bool relogin = false;
public F_Main(Form f_login,string userGH, string userName, string userBZ, string ZYGX)
{
InitializeComponent();
YGGH = userGH;
YGXM = userName;
BZMC = userBZ;
ZY = ZYGX;
flogin = f_login3;
}主窗体重新登录事件这样写
private void btnReset_Click(object sender, EventArgs e)
{ if (relogin)
{
flogin.Show();
}
else
{
flogin.Close();
}
}
主窗体FormClosing事件这样写。
private void F_Main_FormClosing(object sender, FormClosingEventArgs e)
{
//Application.Exit();
relogin = true;
this.Close();
}我这样是按照13楼的写法。还是不行啊!没有把登录窗体调出来阿!
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
DialogResult result;
using (frmLogin frmLogin = new frmLogin())
{
result = frmLogin.ShowDialog();
}
if (result == DialogResult.OK)
{
Application.Run(new frmMain());
}
}
登陆窗体 public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
} private void btnLogin_Click(object sender, EventArgs e)
{
bool isLoginOk = false;
//登陆逻辑处理...假设成功
isLoginOk=true;
if (isLoginOk)
{
DialogResult = DialogResult.OK;
}
}
}主窗体重新登录: private void btnReLogin_Click(object sender, EventArgs e)
{
using (frmLogin frmLogin = new frmLogin())
{
frmLogin.ShowDialog();
}
}
:Form {
public logonWindow 登录窗口 = new LogonWindow();public 主窗口加载完成后的方法()
{
登录窗口.closeing+=(s,e)=>{
//这里不关闭窗口
xx.放弃=true;//忘记怎么写了
登录窗口.hide();
}; 登录窗口. ShowDialog();
}
//下次打开再用 登录窗口. ShowDialog(); 就行了
}
{
Application.Restart();
}
1.主窗体中btnReset_Click的代码和F_Main_FormClosing调转了
2.主窗体的构造函数中我注释的那句你写错了。Form flogin;
bool relogin = false;
public F_Main(Form f_login,string userGH, string userName, string userBZ, string ZYGX)
{
InitializeComponent();
YGGH = userGH;
YGXM = userName;
BZMC = userBZ;
ZY = ZYGX;
flogin = f_login;//flogin=f_login3;
}
MainWindow 主窗口登录窗口MainWindow mw = new MainWindow(this);
mw.Show(this);
this.Visible = false;主窗体变量
ProgramLoad mw_programload;
主窗口重新登录this.Dispose();
mw_programload.Visible = true;
主窗口关闭事件private void MainWindow_FormClosed(object sender, FormClosedEventArgs e)
{
mw_programload.Dispose();
}
public MainWindow(ProgramLoad _form)
{
InitializeComponent();
mw_programload = _form;
}