2011-05-05 161 views
1

我想创建两种形式:LoginForm和BaseForm。在C#中使用Windows窗体创建多个窗体?

LoginForm首先创建,它包含'Login'和'cancel'按钮。当用户点击“登录”按钮时,应关闭LoginForm并创建并打开BaseForm。

当用户点击LoginForm的'取消'按钮时,它应该被关闭。

我该怎么办?任何人都可以请给我这个好的解决方案?

解决方案:


在main():

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
LoginForm form=new LoginForm(); 
if(form.showDialog()==DialogResult.OK) 
{ 
form.close(); 
Application.Run(new BaseForm()); 
} 
else 
form.close(); 
} 
+1

您的问题究竟是什么?要显示一个表单,使用BaseForm f = new BaseForm(); BaseForm.Show(); 。要关闭取消按钮处理程序中的表单,请使用this.Close(); – 2011-05-05 12:05:35

回答

0

在应用程序的主要功能:

  1. 创建登录表单,并使用ShowDialog()到模态表现出来。
  2. ShowDialog()返回的值中获取请求的操作。
  3. 如果用户按下取消,然后从主窗体返回,从而关闭应用程序。
  4. 否则创建主窗体并将其传递给Application.Run()

如果按此顺序执行,那么在您的用户完成登录表单之前,主窗体将不会显示。

+0

我已经尝试过您的解决方案当Iam关闭LoginForm Iam得到此运行时错误:在System.Windows.Forms.dll中发生类型System.InvalidOperationException的未处理异常其他信息:创建第一个IWin32Window对象之前必须调用SetCompatibleTextRenderingDefault在应用程序中。 – user186246 2011-05-05 12:51:01

+0

消息很清楚。你只需要做它告诉你要做的事情。 – 2011-05-05 12:59:59

+0

因此在调用第一个iWin32Window对象之前调用SetCompatibleTextRenderingDefault?除非你发布更多的代码,否则我们无能为力。 – 2011-05-05 13:00:33

0

你可以简单地打开主窗体,检查用户进行身份验证。然后显示登录表单,如果用户取消登录表单,只需关闭应用程序。

1

我有一个需要登录的应用程序,我在初始化方法中做的是检查用户是否登录。如果他们不是,我用登录提示打开一个Modal。如果他们取消我关闭应用程序。

的代码,以显示模式:

var login = new Login(); 
login.ShowDialog(); 

上登录的取消按钮将调用类似:

Application.Exit(); 
1
private void buttonLogIn_Click(object sender, EventArgs e) 
    { 
     LoginForm loginForm = new LoginForm(); 
     loginForm .Show(); 
     this.Hide(); 
    } 



private void buttonCancel_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    }