2009-10-27 3 views
6

使用するWindows Forms私は、ユーザーが(Form1と言って)自分自身を承認する小さなログイン画面を持っていたいので、メインアプリケーション(Form2)はログイン後に開きます。しかし、私はApplication.Run(Form1)を使用すると、それを閉じた後、アプリケーション全体が終了すると思います。Windowsフォーム:ログイン後にメインアプリケーションを作成します。これは実行するフォームですか?

Invisible Form2以外の方法はありませんか? オンデマンドでForm2を実行し、元々Form1を閉じたようなものはありますか?あなたには意味があると思います。

+0

[この質問に対する私の答えを見る](http://stackoverflow.com/questions/1623695/how-to-end-process-after-closing-whole-application-in-c-net/1623878#1623878) –

+0

MainForm LoadイベントからLoginFormを簡単に実装できると思います。 私はここで説明しました: http://walaapoints.blogspot.com/2011/06/login-form-main-form.html –

答えて

10

System.Windows.Forms.ApplicationContextのオーバーロードを作成し、そのコンストラクタでForm1最初にしForm2を作成します。

を受け入れるApplication.Runオーバーロードを使用してください。

+3

+1。 CodeProject(http://www.codeproject.com/KB/cs/applicationcontextsplash.aspx)には、 'ApplicationContext'を使ってメインフォームの前にスプラッシュスクリーンを作成する方法を示す記事もありますが、すべてが機能します。 – Groo

-1

この方法をお試しください。あなたのプログラムメインラインからメインフォームクラスを作成し、このクラスの中からログインフォームを呼び出す "go"関数を持っています。この関数がtrueを返す場合は、Application.Run(form)の呼び出しを続行できます。

MainForm form = new MainForm(); 
form.Show(); 
if (form.go()) 
{ 
    Application.Run(form); 
} 
else 
{ 
    form.Close(); 
} 

class MainForm 
{ 
    public bool go() 
    { 
    LoginFrom lf = new LoginForm() 
    if (lf.ShowDialog() != DialogResult.OK) 
    { 
     return false; 
    } 
    } 
} 

少し単純ですが、正しい方向に進むはずです。

3

次のような、Program.csの(デフォルト名)の内側にメインアプリケーションのフォームを起動する前に、認証フォームを呼び出すことができます。彼らは適切にあなたがちょうど終了する必要があり、その後の認証場合Form1の内部

static void Main() 
    { 
     Form1 f1 = new Form1(); 
     DialogResult dr = f1.ShowDialog(); 
     if (dr == DialogResult.OK) 
     { 
      Application.Run(new Form2()); 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 

:認証に失敗した場合は

this.DialogResult = DialogResult.OK; 
    this.Close(); 

、あなたは、彼らが再試行認証することができ、それらに試みの最大数を与える、などのことができますあなたが決めるときに、彼らはちょうど

を呼び出すあまり持っていました
Application.Exit(); 
0

はForm1がありましょう

  • 「偽」である設定]タブにプロパティ
  • 移動を予測し、bool型と値の「lcheck」を設定作成するために行く
    1. プロジェクトのプロパティで設定を使用してみてください

      while(System.properties.default.lcheck!=true) 
      { 
          authentication process: 
      } 
      
    2. 等form1- formload関数でループしながら、メインフォームとForm2がログオンフォーム
    3. 使用であります

    注:このプロセスについては疑問があります。誰かがアプリケーションのappdataフォルダから設定を変更できるかもしれません。

  • 関連する問題