一个登录窗体,Main在里面,成功登录后得到两个值ID和Name然后怎么把这个窗体关掉,显示另外一个Form啊?并且在这个新的Form中要得到ID和Name这个两个值;this.close();
new FrMain().show();这样出的问题乱七八糟,一下两个都关了,一下旧的是关了,新的也出来了,可你把新的关掉后进程还不结束!!快晕死了,高手指点下。
new FrMain().show();这样出的问题乱七八糟,一下两个都关了,一下旧的是关了,新的也出来了,可你把新的关掉后进程还不结束!!快晕死了,高手指点下。
public class Main:....
{
public static string username="";
public static string password="";
}
OtherForm.cs
....
if( Main.username == ".." && Main.passowd == ".." )
但你在新窗体调用了老窗体里面的东西!!
但老窗体已经close掉了!
所以系统并没释放掉老窗体的所有资源,现在我把新的关掉了,进程还不结束,怎么办?
Rich.Main.Library.SimpleInputForm test = new Rich.Main.Library.SimpleInputForm();
test.ShowDialog();
this.Close();
你可以在一个form1里把,username和怕ssword写进一个文件中xml或者其他随你写
然后在new form2();
this.hide();
然后再fomr2里读出文件内容;解决方法2:
在form2的构造函数中写方法获得form1中的username和password
如下:
public class Form2 : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
private string name="";
private string id=""; public Form2(string name_fm1 ,string id_fm1)
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); if(name_fm1!=""&&id_fm1!="")
{
this.name=name_fm1.ToString();
this.id =id_fm1.ToString();
}
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
.....
}然后在form1中 private void button2_Click(object sender, System.EventArgs e)
{
Form2 fm2=new Form2(this.textBox1.Text,this.textBox2.Text);
fm2.Show();
this.Hide(); }
public FormB(string userName,string userPass)
{
this.UserName = userName;
this.UserPass = userPass
}在窗体A中就可以使用此构造函数来向窗体B中传递用户名和密码了.this.hide();
FormB form = new FormB(this.textBox1.Text,this.textBox2.Text);
form.show();
{
//在此处以对话框形式显示登陆窗体,然后将获得的值存储到当前窗体的变量中
FormMain frmMain = new FormMain();
Application.Run( frmMain );
}
{
/// 获得系统登录信息
FrmLogin tmpForm = new FrmLogin();
tmpForm.ShowDialog();
if(tmpForm.DialogResult != DialogResult.OK)
{
tmpForm = null;
return;
}
else
{
SysInfor sysInfor = new SysInfor(tmpForm.UserPass, tmpForm.UserName);
FrmMain mainFrm = new FrmMain(sysInfor);
tmpForm = null;
Application.Run(mainFrm);
/// 初始化全局变量
}
}
1,为什么一定要把Main()放到登陆窗口中,难道就不可以换换思维,把Main()拿出去吗?
2,程序被终止是因为Main()所在的窗口被Close掉了,还是因为其被Dispose掉了。所以,针对上面两点可以指定不同 的解决方法
1,把Main()从登陆窗口拿出去
2,把.NET为你自动生成的Dispose(bool)重载版本修改一下,改成Hide该窗口,而不是Dispose,当然此后Close()时就是Hide而不是Dispose,除非你显式调用Dispose