C#登录程序
我登录做好了 就是Form1登录后会出现Form2 但是怎么弄登录到Form2的时候 Form1这个窗口自动关掉 --------------------编程问答-------------------- From1.Close() --------------------编程问答-------------------- Form1 是主启动就用Hide()Form2 是主启动就用Close() --------------------编程问答-------------------- form1是parent,是不能close的,一旦close,form2也关闭了。form1只好hide --------------------编程问答--------------------
+ --------------------编程问答-------------------- form1如果是父窗体,只能隐藏了。销毁的话,子窗体也一同销毁。 --------------------编程问答-------------------- 如果form1和form2没有任何关系,当然,可以在实例化并显示出form2后把form1释放掉。 --------------------编程问答-------------------- Form1 如果是父窗体那只能用Hide()
Form2 就用Close() --------------------编程问答-------------------- 隐藏掉,在form2中实例化form1:
Form1 f1 = (Form1)this.owner;
f1.hide(); --------------------编程问答-------------------- 看你的意思,你的form1就是个登陆窗口,form2才是主程序窗口吧?也许你没实现好。
两种办法,你可以在main里先运行登陆窗口,通过了在往下执行,关闭Form1打开form2.
二是把form2作为启动窗口,在其shown事件里显示form1.这样就不怕关闭form1了。 --------------------编程问答-------------------- 2楼说的对直接close了 --------------------编程问答-------------------- FORM1 是你的主线程。。。
FORM1 要是关闭的 话程序就 结束了。
以你现在的 程度 给你 发 代码你也看不懂的。
教你个最简单的方法。
你在 FORM1 打开 FORM2 的 代码后面加一句。。
FORM1(对象).visble=false; --------------------编程问答-------------------- 2楼加3楼的就可以了 --------------------编程问答-------------------- 如果 想直接 关闭的 话 就涉及到线程了。。给你三种方法
一. 当前用户点击窗体"关闭",右上角上的"X"图标时的系统消息的响应顺序是:
1. 系统截获用户的点击消息,可通过重载 WndProc截获;
2. 触发窗体的 FormClosing 事件;
3. 关闭窗体,回收本窗体所占用的相应资源;
二. 当在程序中用 this.Close() 关闭窗体时,系统响应的顺序是:
1. 触发窗体的 FormClosing 事件;
2. 关闭窗体,回收本窗体所占用的相应资源;
三. 当用户关闭操作系统时,窗体响应的顺序是:
1. 触发窗体的 FormClosing 事件;
2. 触发窗体的 SystemEvents_SessionEnding 事件;
3. 关闭窗体,回收本窗体所占用的相应资源;
因此当我们希望在点击主窗体"X"图标时,不希望程序退出,而只是最小化并隐藏窗体,则最好是通过重载 WndProc,截获点击该按钮事件,实现窗体最小化,从而达到不退出主程序的目的.
而不是简单的在FormClosing 事件中加上 e.Cancel=true; 那样在关闭或注销系统时,就不能自动关闭该窗体(程序)了;
经过以上分析,我们只需在窗体中加上以下代码即可:
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
{
this.WindowState = FormWindowState.Minimized;
this.Hide();
MessageBox.Show("click close button");
return;
}
base.WndProc(ref m);
}
四. 截获系统的关闭,注销信息
只需在程序Main()函数中为主窗体添加SystemEvents_SessionEnding事件;
Form1 frmMain = new Form1();
SystemEvents.SessionEnding += new SessionEndingEventHandler(frmMain.SystemEvents_SessionEnding);
在Form1 窗体中添加如下代码,以响应关机,注销或重启事件:
internal void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
string exitType = e.Reason.ToString().Trim().ToUpper();
MessageBox.Show(exitType);
string msgTitle = "";
string msgQuestion = "";
if (exitType.Contains("SHUTDOWN"))
{
msgTitle = "关机";
msgQuestion = "真的要关机吗?";
}
else if (exitType.Contains("LOGOFF"))
{
msgTitle = "注销";
msgQuestion = "真的要注销吗?";
}
DialogResult result = MessageBox.Show(msgQuestion , msgTitle , MessageBoxButtons.YesNo);
e.Cancel = (result == DialogResult.No);
}
--------------------编程问答-------------------- 这样是做好的 直接在Program中的main方法中搞你的东西吧 --------------------编程问答-------------------- 如果你的登录窗口是程序运行开始的窗体,干吗不在Program的Main方法内写
Form1 f1=new Form1();
if(f1.showdialog()==dialogResult.OK){
Form2.show();
}
Form1点击确定后并判断登录帐号密码正确后执行:
this.dialogResult=DialogResult.ok
this.Close()
补充:.NET技术 , C#