-1

Program.cs

using (Login login = new Login())
{ 
    login.ShowDialog(); //Close this form after login is correct in login form button_click
}
if (isValiduser == true) //Static variable created in application to check user
{           
     Application.Run(new MainInterface());
}

ログインフォームクリックイベント

private void btnLogin_Click(object sender, EventArgs e)
{
  if(isValiduser == true)
   {
      this.Close();
   }
 else
   {
      //else part code
   }
}

このコードによると、ログイン フォームでログイン イベントをクリックし、isValiduser が true を返すと、Program.cs がMainInterfaceフォームを実行します。しかし実際には、このコードは実行されませんApplication.Run(new MainInterface())。では、このコードの何が問題なのか誰か教えてもらえますか?

4

3 に答える 3

1

あなたのコードProgram.CS

 using (Login login = new Login())
    { 
         login.ShowDialog(); //Close this form after login is correct in login form button_click
         if (isValiduser == true) //Static variable created in application to check user
         {           
            Application.Run(new MainInterface());
         }
    }

そして、ログインクリックイベントはそのようにする必要があります

private void btnLogin_Click(object sender, EventArgs e)
        {
          if(isValiduser == true)
           {
              //this.Close();
              this.DialogResult = DialogResult.OK;
           }
         else
           {
              //else part code
           }
        }
于 2012-06-14T05:11:40.650 に答える
0

問題は、コードのように設定されていないことisValiduserですtrue。そのため、より新しい実行MainInterface形式になります。

Program.cs ファイルで isValiduser という静的変数を次のように定義したとします。

static class Program
{
    public static bool isValiduser = false;

    [STAThread]
    static void Main()
    {
      // rest of your code 

ログインボタンをクリックすると、ログインステータスに基づいてこの変数を設定する必要があります。これには別の方法が必要な場合があります。

private void btnLogin_Click(object sender, EventArgs e)
{
    // call validate user method and set value to `isValiduser`
    Program.isValiduser= IsValidUser("username", "password"); // here for testing i'm set it as true 
    if(Program.isValiduser== true)
    {
      this.Close();
    }
    else
    {
      //else part code
    }
}

ユーザーを検証する方法を持つことができます

private bool IsValidUser(string name, string pw)
{
    return true; // impliment this method 
}
于 2012-06-14T05:01:24.483 に答える
-1

私が考えているのはthis.Close()、コントロールに到達すると、メインスレッドに戻り、アプリケーションが終了することです (その後にそれ以上のコードがない場合)。つまり、プログラムはメインの最初の行から始まり、最後で終わります。したがって、最初にログイン フォームを開く場合は、ログイン フォームを閉じる前に MainInterface フォームを開く必要があります。

于 2012-06-14T04:03:52.590 に答える