2011-06-28 11 views
0

私は現在のメインウィンドウを閉じて、新しいメインウィンドウを表示する必要があります。 最初にMainをロードします。メインウィンドウのリロード方法は?

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     var main = new Main(); 
     Application.Run(main); 
    } 
} 

イベントメインで私は近くに新しいメインを表示する必要があります。 私はそうしようとした:

private void ChangeUsers() 
{ 
    this.Visible = false; 
    var window = new Main(); 
    window.Show(); 
    this.Close(); 
} 

が、これは正しくない仕事を。

+3

なぜウィンドウを閉じてからもう一度表示する必要がありますか?これはあなたのために何を実現しますか? –

+0

私は簡易ユーザー切り替えを行います。 MAINウィンドウには、intsilizatsii MAINによって実行される関数があります。私はデータをリフレッシュする必要はありませんが、単純にchitymクラスから始めました。 – Mediator

+0

メインウィンドウを閉じて再度開く必要性について、より詳細な情報を提供してください。 –

答えて

1

これはフォームをモーダルに表示し、フォームにDialogResultを返し、フォームを再度表示するかどうかを示します。

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     Main main; 
     do 
     { 
     main = new Main(); 
     } while (DialogResult.OK == main.ShowDialog()); 
    } 
} 

private void ChangeUsers() 
{ 
    this.DialogResult = DialogResult.OK; 
    this.Close(); 
} 
0

メインウィンドウを閉じると、キャリアプロセスにメッセージが送信され、プログラムは制御できなくなります(これ以上のコードを実行することはできません)。

代わりにログオフする、DB接続をクローズする、すべての子ウィンドウを閉じる、ログイン画面に戻って「高速ユーザー切り替え」機能を実現するなどの機能を提供します。

P.S:この方法は、メインウィンドウがMDIウィンドウの場合に最も効果があります。

1

あなたは多分このような何かを行うことができます。

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     var loader = new Loader(); 
     Application.Run(loader); 
    } 
} 

public class Loader : Form 
{ 
    public Loader() 
    { 
     InitializeComponent(); 
     Main win = new Main(); 
     win.Show(); 
     this.Hide(); 
    } 

} 

public class Main : Form 
{ 

} 

この方法では、ローダーフォーム(ランニングフォームで閉じますが、隠されることはありません)。また、必要な数のメインフォーム(ウィンドウ)を作成できます。アプリケーションを終了したいときは、Loaderフォームにメッセージを送信して終了します。

3

変更し、これに主な方法:

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     new Main().Show(); 
     Application.Run(); 
    } 
} 

そして、あなたがアプリケーションを閉じるためにApplication.Exit()を呼び出す必要があることに注意してください。

関連する問題