2013-04-24 66 views
1

我正在創建一個XNA應用程序,我想在開始XNA應用程序之前添加一個Windows窗體,要求他的用戶名和密碼登錄,我創建了所有這些,但是當我運行我的程序時,它會打開XNA直接窗口。請告訴我如何使用Windows Form運行XNA?連接Windows窗體與XNA應用程序

+0

整個遊戲是假設在一個窗體中,還是隻是想要啓動登錄程序? – Deukalion 2013-04-24 10:14:37

+0

如果您想獲得更多答案,提示可能會將您的問題標記爲已回答,如果答案是肯定的,您將獲得更多答案。我看到你已經提出了很多問題,但從未標記過答案。另外,我添加了一個例子。如果您希望爲您的遊戲添加控件,請說出來,我可以給你一個例子說明如何做到這一點相當簡單。 – Deukalion 2013-04-24 10:58:30

+0

非常感謝你! :) – 2013-04-26 07:41:11

回答

1

如何在遊戲中創建表單取決於您,但在開始遊戲之前檢查某些內容的最佳方法可能是放入Program.cs文件。

我做的一個例子是這樣的:

using System.Windows.Forms; 

static class Program 
{ 
    static void Main(string[] args) 
    { 
     #if WINDOWS 

     if (MessageBox.Show("Do you wish to start?", "Start Game", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      using (Game1 game = new Game1()) 
      { 
       game.Run(); 
      } 
     } 

     #endif 
    } 
} 

這提示用戶有一個問題,如果比賽應該開始。如果您隨後使用自己的表單自定義它,而不是檢查一些數據並返回有效的DialogResult。如果DialogResult == DialogResult.OK,那麼用戶是有效的,也許對話框可以存儲登錄信息,以便遊戲可以獲得它(如果需要),也許在game.Run()之後做到這一點。

在創建自定義InputDialog時,它非常簡單。我有一個動態輸入框,我只是爲此定製。這個簡單的佈局這個就變成了:

我登入對話框
using System.Windows.Forms; 

static class Program 
{ 
    static void Main(string[] args) 
    { 
     #if WINDOWS 

     XNASignIn signinDialog = new XNASignIn(); 
     DialogResult result = DialogResult.Abort; 

     while (result == DialogResult.Abort) 
     { 
      result = signinDialog.ShowDialog(); 

      if (result == DialogResult.Abort) 
       MessageBox.Show("You entered the wrong username and password"); 
     } 

     if (result == DialogResult.Cancel) 
      MessageBox.Show("You cancelled the login, the game will exit"); 
     else if (result == DialogResult.OK) 
     { 
      using (Game1 game = new Game1()) 
      { 
       game.Run(); 
      } 
     } 

     #endif 
    } 

完整的源代碼:

http://pastebin.com/yVZbtxH8

只需創建一個類,並將其複製在

記得添加引用。爲您的XNA項目的System.Windows.Forms。