我有一个应用程序,提示用户在表单中输入密码。但是,主要表格显示在次要表格之后。如何在用户输入密码之前不显示主表单?
修改:
//main form:
public Form1()
{
new InputPswrd().Show();
InitializeComponent();
}
答案 0 :(得分:4)
只需2美分,但您可以在显示第一张表格时登录表格,并从登录表格中拨打“主要”表格。
假设典型的Windows窗体应用程序,您可以像这样更改Program.cs的内容:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm()); //calling the Login form instead
}
}
对我来说,似乎比试图阻止主窗体在其构造函数中显示更合乎逻辑的方法。
干杯
答案 1 :(得分:1)
将.Show()
更改为.ShowDialog()
,将密码表单显示为模式对话框,这将阻止下一行代码执行,直到您关闭密码表单。
var inputPswrdForm = new InputPswrd();
inputPswrdForm.ShowDialog();
我假设您还要在继续之前知道用户的密码是否有效。
您可以在第二个表单上创建一个属性,一旦控件返回到第一个表单,您就可以检查该属性,如:
public bool IsUserAuthenticated { get; set; }
然后以第一种形式:
var inputPswrdForm = new InputPswrd();
inputPswrdForm.ShowDialog();
if (!inputPswrdForm.IsUserAuthenticated)
// password was wrong, take some action
InitializeComponent();
答案 2 :(得分:0)
Form.ShowDialog方法有一个可选参数owner,可用于指定表单的父子关系。例如,当主窗体中的代码显示一个对话框时,您可以将Me(在Visual Basic中)或此(在C#中)作为对话框的所有者传递,以将主窗体建立为所有者,如下面的代码所示。
Form f = new Form();
f.ShowDialog(this);
有关进一步参考,请参阅:http://msdn.microsoft.com/en-us/library/aa984358%28v=vs.71%29.aspx