日期:2014-05-18  浏览次数:21130 次

C#winform登录注销模块

我做了一个winform(C#) 程序,有登录界面,主窗体等等,主窗体上有菜单栏,其中有一个注销按钮,
点击这个按钮就返回到登录界面重新登录,并且是用的ShowDialog()方法,按后点击登录按钮(该按钮在登陆界面上),就重新回到主窗体上,整个过程主窗体并没有消失,也没有重新生成。该怎么解决!!

------解决方案--------------------
点注销的时候,先把主窗口隐藏起来,然后调用登录界面

麻烦的是登录界面的处理,需要处理两种状态,如果是正常的登录,那么登录成功就按照程序流程走,登录失败就退出,如果是注销的登录,那么登录成功就是关闭登录界面,调出注销前的窗口,登录失败就关闭登录窗口,然后关闭注销前窗口。
------解决方案--------------------
方法你自己不是都写出来了吗?
------解决方案--------------------
建议你在数据库中增加一列为是否已经登入
点击注销的是更改该字段
并且在窗体中都去判断该字段是否为登入的
------解决方案--------------------
点击按钮的时候,将主窗体用Hide()方法隐藏,然后显示出登录界面,登录完成后,将主窗体显示出来,关掉登录界面。
这里,有一点,登录完成显示主窗体,这一点,可以将主窗体作为参数传入登陆窗口,然后再登录验证结束后,将主窗体显示出来,或者用委托代理的方式,在登录窗体上添加委托事件,在主窗体预订登录窗体的委托事件,和实现此事件(显示主窗体),在登录窗体关闭的时候触发这个事件,这样就好了

好像说的有点乱。
------解决方案--------------------
关了再初始化
------解决方案--------------------
做一个注销函数,把该隐藏的都隐藏起来!
------解决方案--------------------
探讨
点击按钮的时候,将主窗体用Hide()方法隐藏,然后显示出登录界面,登录完成后,将主窗体显示出来,关掉登录界面。
这里,有一点,登录完成显示主窗体,这一点,可以将主窗体作为参数传入登陆窗口,然后再登录验证结束后,将主窗体显示出来,或者用委托代理的方式,在登录窗体上添加委托事件,在主窗体预订登录窗体的委托事件,和实现此事件(显示主窗体),在登录窗体关闭的时候触发这个事件,这样就好了

好像说的有点乱。…

--------------------------------------------
这里将主窗体Hide()后,那么在登录窗体中的登录按钮事件中,怎么样才能得到主窗体。

------解决方案--------------------
// 注销按钮
private void btnzx_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
}

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

// 初始化系统必须数据
Application.DoEvents();
Globle.InitProject();
dlgLogin dlg = new dlgLogin();
DialogResult result = DialogResult.OK;
while (result == DialogResult.OK)
{
result = DialogResult.Cancel;
if (dlg.ShowDialog() == DialogResult.OK)
{
udGISIOSet frm = new udGISIOSet(); //主窗体
result = frm.ShowDialog();
}
else
Application.Exit();
}
}
------解决方案--------------------
Application.Restart();
------解决方案--------------------
登陆界面设为主窗体吧.登入成功就弹出另一个窗体,登陆界面窗体隐藏.
在另一窗体单击注销时关闭当前窗体,返回登入界面.

登陆界面窗体是Form1,另一窗体是Form2,注销按钮为button1
C# code
//登陆成功的话:
Form2 f=new Form2();
f.Owner=this;
this.Hide();
f.showDialog();
//单击注销按钮的话:
this.close();
//在Form2的closed事件写
 this.Owner.show();

------解决方案--------------------
TO:gsz_stylm 

加一个主窗口名上去,就可以了
如:
C# code

MainFrm.Show();//MaiFrm为主窗口名