举个例子比如我现在写一个用户登陆和退出登陆,父窗体中的代码如下:
public static bool session=false;
public Main()
{
if(session==false){
//在没有登陆时默认显示的"子窗体form1"
form1 fm1=new form1;
fm1.Mdiparent=this();
fm1.show(); }elseif(session==true){
form2 fm2=new form2;
fm2.Mdiparent=this();
fm2.show();
//当session为true时登陆成功.这里显示登陆成功后的内容
}
}private void button1_Click(object sender, EventArgs e)
{
//这里是退出登陆的按钮CLICK事件代码.
session=false;
messagebox.show("已经退出了登陆,需要再次显示子窗体form1.")
//问题就是这,退出登陆后把session的值改写成了false,父窗体中应该继续显示form1,而实际却还是显示的form2,怎么解决?
}
public static bool session=false;
public Main()
{
if(session==false){
//在没有登陆时默认显示的"子窗体form1"
form1 fm1=new form1;
fm1.Mdiparent=this();
fm1.show(); }elseif(session==true){
form2 fm2=new form2;
fm2.Mdiparent=this();
fm2.show();
//当session为true时登陆成功.这里显示登陆成功后的内容
}
}private void button1_Click(object sender, EventArgs e)
{
//这里是退出登陆的按钮CLICK事件代码.
session=false;
messagebox.show("已经退出了登陆,需要再次显示子窗体form1.")
//问题就是这,退出登陆后把session的值改写成了false,父窗体中应该继续显示form1,而实际却还是显示的form2,怎么解决?
}
解决方案 »
- 客户端如何通过服务端跟其他客户端发送信息
- 怎么获得保存目录啊
- vs2008的问题(不能手动添加数据源)
- Unix系统环境如何运行C#程序?
- C#中有没有类似DetailsView的控件
- 请问一下这两个VC函数在C#中对应的操作是什么呢?
- rdlc在winform如何调试?边修改rdlc文件,边调试.要如何设置?
- 帮帮我 解决一个对于你们简单的问题急急急!!
- 水晶报表问题,搞了两天了,头大啊!
- 更新了DataGridView的单元格,与之绑定的DataTable的单元格也更新了,可是RowState没有更新
- 搜索了好些关于comboBOX自动完成的文章,可还是没明白,特发帖求助。
- 关于C#重新加载父窗体的问题.
{SetSession();
}
private SetSession()
{
if(session==false){
//在没有登陆时默认显示的"子窗体form1"
form1 fm1=new form1();
fm1.Mdiparent=this;
fm1.show(); }elseif(session==true){
form2 fm2=new form2();
fm2.Mdiparent=this;
fm2.show();
//当session为true时登陆成功.这里显示登陆成功后的内容
}
}private void button1_Click(object sender, EventArgs e)
{
//这里是退出登陆的按钮CLICK事件代码.
session=false;
messagebox.show("已经退出了登陆,需要再次显示子窗体form1.")
SetSession();
}
简单点来说你应该这样:public void SessionRefresh()
{ CloseAllMdiChildWindow(); //先关闭其它窗口
if(session==false){
//在没有登陆时默认显示的"子窗体form1"
form1 fm1=new form1;
fm1.Mdiparent=this();
fm1.show(); }elseif(session==true){
form2 fm2=new form2;
fm2.Mdiparent=this();
fm2.show();
//当session为true时登陆成功.这里显示登陆成功后的内容
}
}private void CloseAllMdiChildWindow()
{
//..这里关闭所有的子窗口。你可以根据情况确定是否需要这个函数以及如何关闭
}
每当你的用户登录成功或者注销时,你都需要调用一次:
SessionRefresh();
即可。这是简单的方法,并不表示一定要这样实现,针对你的项目的情况你需要做出很多改进。
如果不关闭窗体怎么实现?主要我看是MAIN好像是注入内存中没更新过来.
但是Main方法只执行一次,也就是说 你的程序只是在程序开始运行的时候做一次判断 显示哪个窗体,之后即使你改变了
Session的值,但是没有对Session改变后进行操作,因为Main只执行一次。 所以写个函数,改变Session之后就调用
下这个函数。
这样的话不仅仅两个窗体 多个窗体也可以通过这个方法来判断 显示哪个,关闭哪个