C# 如何在主窗体之前显示辅助窗体?

C# 如何在主窗体之前显示辅助窗体?,c#,winforms,C#,Winforms,我有一个应用程序,提示用户在表单中输入密码。但是,主窗体显示在次窗体之后。如何使主窗体在用户输入密码之前不显示 编辑: //main form: public Form1() { new InputPswrd().Show(); InitializeComponent(); } 将.Show()更改为.ShowDialog(),以将密码表单显示为模式对话框,这将阻止下一行代码执行,直到您关闭密码表单 var inputPswrdF

我有一个应用程序,提示用户在表单中输入密码。但是,主窗体显示在次窗体之后。如何使主窗体在用户输入密码之前不显示

编辑

    //main form:
    public Form1()
    {
        new InputPswrd().Show();
        InitializeComponent();
    }
.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();
.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();

Form.ShowDialog方法有一个可选参数owner,可用于指定窗体的父子关系。例如,当主窗体中的代码显示对话框时,您可以将我(在Visual Basic中)或这个(在C#中)传递为对话框的所有者,以将主窗体建立为所有者,如下代码所示

Form f = new Form();
f.ShowDialog(this);

有关进一步参考,请参阅:

Form.ShowDialog方法有一个可选参数owner,可用于指定表单的父子关系。例如,当主窗体中的代码显示对话框时,您可以将我(在Visual Basic中)或这个(在C#中)传递为对话框的所有者,以将主窗体建立为所有者,如下代码所示

Form f = new Form();
f.ShowDialog(this);

如需进一步参考,请参考:

仅我的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
    }
}
静态类程序
{
/// 
///应用程序的主要入口点。
/// 
[状态线程]
静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());//改为调用登录表单
}
}
在我看来,这似乎比试图阻止主窗体出现在其构造函数中更符合逻辑


干杯

只要我的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
    }
}
静态类程序
{
/// 
///应用程序的主要入口点。
/// 
[状态线程]
静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());//改为调用登录表单
}
}
在我看来,这似乎比试图阻止主窗体出现在其构造函数中更符合逻辑


干杯

如何关闭程序中的输入表单,如果手动关闭,则主表单将关闭。如何关闭程序中的输入表单,如果手动关闭,则主表单将关闭。