【发布时间】:2010-12-20 20:18:18
【问题描述】:
我想知道打开新表单后如何关闭表单。
例如,我有一个登录表单,当他们登录时,我打开了一个新表单,但我想关闭登录表单。
那我该怎么做呢?
我在 windows mobile 6 compact edition 上制作这些表格。不确定在 Windows 窗体中是否会有所不同。
【问题讨论】:
标签: c# winforms windows-mobile compact-framework
我想知道打开新表单后如何关闭表单。
例如,我有一个登录表单,当他们登录时,我打开了一个新表单,但我想关闭登录表单。
那我该怎么做呢?
我在 windows mobile 6 compact edition 上制作这些表格。不确定在 Windows 窗体中是否会有所不同。
【问题讨论】:
标签: c# winforms windows-mobile compact-framework
可以这样:
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- 将您的应用程序的表单作为主要表单。当应用程序启动时,隐藏它并显示登录窗口。登录窗口关闭后,显示主窗体。
2- 一旦用户在登录窗口中输入他的凭据,隐藏它(不要关闭它),然后打开另一个表单。当第二个关闭时,关闭两者以关闭应用程序。
【讨论】:
大多数桌面应用程序将登录表单实现为模式对话框。如果你做同样的事情,你将首先显示主窗体,然后立即从主窗体的 form_loaded 事件将登录显示为模式对话框。登录对话框关闭后,您可以从中获取登录凭据并继续。
【讨论】:
只需致电Form.Close()。
您需要为打开的登录表单获取一个对象,或者如果您在登录表单中想要关闭它,请尝试调用this.Close()
【讨论】:
我疯了,但我建议只使用一种形式。将其余的表单设置为 UserControls,然后将它们换入和换出主表单。那么你就不用担心这些垃圾了。
我的 Program.cs 通常看起来像:
public class Program
{
static void Main()
{
MyApp application = new MyApp();
application.Initialise();
Application.Run(application.MainForm);
}
}
这样我可以在表单之外保持初始化和逻辑。
【讨论】: