2015-07-21 28 views
-2

我想讓winform打開一個XNA表單。在線查看我發現的最好方法是首先通過program.cs打開表單,然後放置一個if語句來檢查是否在Winform中啓動了會啓用DialogResult.OK的啓動按鈕。我知道我需要使用ShowDialog來開始表單,但是我使用當前代碼獲取兩個表單。它打開一個,關閉它,它打開另一個窗體,當你關閉它時,你會得到Xna窗體。有什麼建議麼? 這裏是我的代碼:你如何使用Form.ShowDialog();正確使用program.cs?

 static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    static void Main(string[] args) 
    { 
     using(Form1 form = new Form1()) 
     { 
      form.ShowDialog(); 
      if(form.ShowDialog() == DialogResult.OK) 
      { 
       using (Game1 game = new Game1()) 
       { 
        game.Run(); 
       } 

      } 

      } 
     } 
    } 

這裏是我的按鈕代碼:

  private void button1_Click(object sender, EventArgs e) 
    { 
     compotents comps = new compotents(); 
     comps.mass = textBox1.Text; 
     comps.velocity = textBox2.Text; 
     comps.gravity = textBox3.Text; 

     button1.DialogResult = DialogResult.OK; 

     this.Close(); 
    } 

(compotents是一類我使用存儲變量和XNA形式使用它們)

回答

0

的表單顯示兩次,因爲您撥打ShowDialog兩次,但沒有對第一個電話的結果進行任何操作。更改爲:

using(Form1 form = new Form1()) 
    { 
     if(form.ShowDialog() == DialogResult.OK) 
     { 
      using (Game1 game = new Game1()) 
      { 
       game.Run(); 
      } 
     } 
    } 
+0

我跑它沒有第一form.ShowDialog,但整個事情關閉我打,沒有它... – Alexandre

+0

不'game.Run'生成線程或東西開始按鈕後?你有沒有嘗試在調試器中運行它,看看問題是否變得明顯? –

+0

當我在調試器中運行它時,它看起來沒有問題。沒有標誌彈出,或例外,我按下按鈕,整個調試器關閉,就好像我關閉了應用程序。遊戲。運行只能打開一個XNA表單。儘管我對Xna很陌生,所以可能就是那個遊戲.Run只會調用代碼開始。我不確定。當我調用ShowDialog兩次時,如果它工作,我不會看到問題是什麼。 – Alexandre