我想知道如何在打开新表单后关闭表单。
例如,我有一个登录表单,当他们登录时,我打开一个新的表单,但我想关闭登录表单。
那我该怎么做呢?
我在windows mobile 6精简版上制作这些表格。不确定它是否会在Windows窗体中有所不同。
答案 0 :(得分:4)
可以这样做:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (DialogResult.OK == new LoginForm().ShowDialog())
{
Application.Run(new MainForm());
}
}
}
如果有效凭据,则应确保LoginForm以DialogResult.OK关闭,否则确保使用DialogResult.Cancel:
private void ValidateLogin(...)
{
... // check credentials
if(validCredentials)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
... // up to you, maybe keep the form displayed to give user a chance to enter correct credentials
}
}
}
无需隐藏任何内容。
答案 1 :(得分:1)
如果主窗体是“登录”窗口,则只能隐藏它,因为如果关闭它,所有其他子窗口也将被关闭。 我猜你有两个选择:
1-制作申请表格,主要表格。应用程序启动时,隐藏它并显示登录窗口。登录窗口关闭后,显示主窗体。
2-用户在登录窗口中输入凭据后,隐藏(不要将其关闭),然后打开另一个表单。当第二个关闭时,关闭两个以关闭应用程序。
答案 2 :(得分:1)
大多数桌面应用程序将登录表单实现为模式对话框。如果您执行相同的操作,则首先显示主窗体,然后立即从主窗体的form_loaded事件中将登录显示为模式对话框。关闭登录对话框后,您可以从中获取登录凭据并继续。
答案 3 :(得分:0)
只需致电Form.Close()
。
您需要获取已打开的登录表单的对象,或者如果您要在登录表单中关闭它,请尝试拨打this.Close()
答案 4 :(得分:0)
我很疯狂,但我建议只使用一种表格。制作表单的其余部分UserControls,然后将它们交换进主表单。然后你不必担心这些垃圾。
我的Program.cs通常看起来像:
public class Program
{
static void Main()
{
MyApp application = new MyApp();
application.Initialise();
Application.Run(application.MainForm);
}
}
这样我就可以在表单之外保持初始化和逻辑。