-2
private void btn_Login_Click(object sender, EventArgs e)
{
    ManageMent.login_check(txtUserName.Text, txtPassword.Text);

    if (ManageMent.Login_Check!=false)
    {
        Control_Center control_panel = new Control_Center();

        control_panel.Show();

        this.Hide();
    }
}

これらのコードを使用しているのですが、ログインボタンの後ろにこれらのコードがありますが、これによりメインのログインフォームがどこかに隠されたままになり、コントロールパネルを閉じるときに、まだ実行されているので、認証が成功したらすぐに閉じたいと思います。これを試しました。選ぶ(); ただし、コントロールパネルが開くのを制限します

4

2 に答える 2

0

アプリケーションを作成する必要があると思いますControl_Center

Application.Run(new Control_Center());

control_center フォームが表示される前に、LoginFormを作成する必要があります。たとえば、フォームがロードされたときに実行できます。

public partial class Control_Center: Form
{
    public Control_Center()
    {
        InitializeComponent();
    }

    private void Control_Center_Load(object sender, EventArgs e)
    {
        LoginForm loginForm = new LoginForm();
        var authorizationResult = loginForm .ShowDialog();
        if (authorizationResult  != System.Windows.Forms.DialogResult.OK)
        {
            this.Close();
        }
    }
}
于 2013-03-18T13:52:54.367 に答える
0

これらはあなたが持っているいくつかのオプションです....

実際には、ログインフォームはメインスレッドとして実行されると思うので、それを閉じても、その中の別のフォームに移動することはありません。メインスレッドを意味するので、トリックは単純なスレッドを使用することです....

if (ManageMent.Login_Check!=false)
    {
            new System.Threading.Thread(new System.Threading.ThreadStart(()=>{
                Application.Run(new Control_Center());
            })).Start();

            this.Dispose();
}

最後にすべてのフォームを閉じたいだけなら、冗談です。

    if (ManageMent.Login_Check!=false)
        {
          this.Hide();
          Control_Center control_panel = new Control_Center();
          control_panel.ShowDialog(this);
          this.Close();
        }
于 2013-03-18T13:50:47.313 に答える