2012-11-13 126 views
0

我是C#(從Java切換)的新手,我在理解C#中的GUI時遇到了一些問題。窗體關閉本身

主類:

Frame frame; 
keepRunning = true; 

public GraphicsComponent() 
{ 
    frame = new Frame(); 
    frame.Show(); 
} 

public void run() 
{ 
    while (keepRunning) 
    { 
     Console.WriteLine("Running"); 
    } 
} 

public static void Main() 
{ 
    GraphicsComponent gameComponent = new GraphicsComponent(); 

    gameComponent.run(); 
} 

使用frame.Show()方法,它出現和消失進行快速的時刻。但運行「運行」循環。

我見過的另一種方法是另一種名爲ShowDialoge()的方法,它可以讓窗口保持打開狀態,但阻止代碼的其餘部分運行直至關閉。

我想要使用它的方式基本上是GUI如何在Java中工作。我可以在其他代碼中根據需要引用對象(以及它的組件)。

謝謝堆!

編輯:有是一個很大的困惑,所以這裏是我的Frame類:

public partial class Frame : Form 
{ 
    public Frame() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
} 
+0

你看過winforms designer嗎?通常你會創建一個繼承自System.Windows.Forms.Form的類(例如Form1),並調用Application.Run(new Form1());在你的主要方法。 – antonijn

+0

是的,這是一個奇怪的設置...... keepRunning定義在哪裏? – Alan

+0

您應該使用表單。一個框架不是你需要的,而是WPF不是WinForms – Alan

回答

1

正常方式揭開序幕WinForms應用程序是文件 - >新建的WinForms項目。當你這樣做時,你會得到「Program.cs」,它包含你的Main方法 - 進入你的應用程序的入口點。從那裏,你有這樣的代碼:

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new ConfigForm()); 
    } 

在這個例子中,我啓動新「ConfigForm」」那是一種形式,幷包含在它的構造函數的一些代碼,看起來像這樣:

public ConfigForm() 
    { 
     InitializeComponent(); 

     // Other init work here 

    } 

我創建由項目上右擊並增添新的形式形式。

你可能要考慮的Application.Run方法,請參閱here,你可以指定一個「主窗體」,這將是主表單在應用程序運行期間運行,並在關閉時結束應用程序,或者您可以指定其他選項。也許最簡單的解決方案是啓動一個主窗體,並且由於該窗體在應用程序的持續時間內是活動的,您可以在窗體內啓動其他長時間運行的代碼。如果它是你想要執行某種背景操作的代碼,那麼你可能想要在它自己的線程中將它解僱。然而,如果你不熟悉c#/ .net,線程是很難的,除非你需要它,否則我會盡量遠離線程。

+0

即時通訊使用表單,該調用只是稱爲框架。以及我將如何能夠在窗體之外運行代碼? –

+0

將編輯添加到答覆中 –