我正在开发一个供个人使用的项目(简单的电话簿)。
基本上,我有三种形式:主要(主要),设置(用于配置设置的那种)和登录 (登录表单,只有在用户选中了启动时要求输入密码的选项时才会启动)。只是为了清楚说明:当.EXE文件启动时,它应该加载 Main 表单,除非选中要求传递的选项( Properties.Settings.Default.AskForPass ==是的) - 首先应该运行登录表单。
以下是登录表单的内容:
我不知道如何让事情以正确的方式运作。
我尝试将 Program.cs 中的行从主更改为登录:
namespace Phonebook
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}
}
}
然后如果用户输入正确的用户名和密码并单击“确定”按钮:
private void button1_Click(object sender, EventArgs e)
{
if (txtUsername.Text == Properties.Settings.Default.MyUsername && txtPassword.Text == Properties.Settings.Default.MyPassword)
{
Main f1 = new Main();
Login f3 = new Login();
f1.Show();
f3.Close();
}
else
{
DialogResult dialogResult = MessageBox.Show("Wrong password! Do you want to try again?", "Warning", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Retry)
{
return;
}
else if (dialogResult == DialogResult.Cancel)
{
this.Close();
}
}
}
登录表单保留在后台,如您所见:
我希望关闭登录表单,因此它不会出现在后台。问题是现在登录表单是主要表单,如果我尝试关闭它,整个应用程序将关闭。
我尝试过改变主人,但没有成功。
有什么想法吗?请帮助!
答案 0 :(得分:5)
您正在创建一个新的登录表单并关闭它。试试
this.Hide();
f1.ShowDialog();
this.Close();
另一种方法是在登录表单上返回一个状态,然后检查它和Application.Run()主窗体:
在登录表单中:
private bool LoggedIn;
public bool IsLoggedIn { get { return LoggedIn; } }
然后在按钮中点击:
LoggedIn = true;
this.Close();
在Program.cs中:
Login f = new Login();
Application.Run(f);
if (f.IsLoggedIn)
Application.Run(new Main());