5

まず、ログインフォームを表示します。ユーザーが正しい ID とパスワードを入力したときに、別のフォームを表示して、ログイン フォームを閉じたい。以下は、ログインフォームを開始する方法です。

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new FrmLogin());
    }
}

さて、メインフォームを表示したい時にクラスのdispose()メソッドを呼び出しFrmLoginますが、すぐにアプリケーションが終了してしまいます。私の解決策は、クラスのvisibleプロパティをに変更することです。それが正しくないことはわかっています。これを解決する方法を提案してください。FrmLoginfalse

4

4 に答える 4

2

ログインが完了した後に 2 番目の APplication.Run を作成するのはどうですか ;) 閉じるのを待ち、ログインを実行してから、MAIN フォームである 2 番目のフォームの Application.Run を実行します。

ところで、「FrmLogin」は .NET 命名パターンに違反しています。古い VB ハンドのようです (そこからのパターンでした)。ログインフォームである必要があります。

于 2012-06-15T09:37:35.433 に答える
2
var loginForm = new LoginForm();
if(loginForm.ShowDialog() != dont_remember_see_intellisense_or_docs.OK)
  return;
var mainForm = new MainForm();
Application.Run(mainForm);

これにより、ログインフォームがダイアログとして表示されます。メインフォームを表示するには、ログインフォームで戻り値を適切なもの (つまり、OK) に設定する必要があります。

于 2012-06-15T09:50:38.570 に答える
1

ログイン フォームをダイアログとして表示できます。ログインに成功すると、メイン フォームを次のように実行できます。

static class Program
{
     public static bool isValid = false;
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        using (FrmLogin login = new FrmLogin())
        { 
            login.ShowDialog(); 
            if (isValid)
            {           
                Application.Run(new MainForm());
            }
        }
    }
}

FrmLogin で、ユーザーを検証して として設定DialogResultOkます。ここでは、ボタンクリックイベントでそれを行いました。

private void btnLogin_Click(object sender, EventArgs e)
{

    Program.isValid= true; // impliment this as method 
    if(Program.isValid)
    {
      this.DialogResult = DialogResult.OK;
      // or this.Close();
    }
    else
    {
      //else part code
    }
}
于 2012-06-15T09:51:42.267 に答える
-2

FrmLogin から別のフォーム myForm を表示するには、単純に呼び出します

myForm window = new window()
window.MDIparent = ParentForm;
window.Show();
于 2012-06-15T10:51:43.303 に答える