2011-06-28 63 views
0

我需要關閉當前主窗口並顯示新的主窗口。 首次加載主。如何重新加載主窗口?

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

你不能這樣做,因爲關閉主窗口會發送一條消息給載體進程結束,然後你的程序不再控制(不能再執行任何代碼)。

提供類似註銷,關閉數據庫連接,關閉所有子窗口,再次返回到登錄屏幕以實現「快速用戶切換」功能。

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()關閉應用程序。

相關問題