2015-01-12 179 views
2

我和朋友正在嘗試使用Visual Studio社區進行文本遊戲。截至目前,我們已經以Windows窗體的形式開始了我們的項目。我們堅持的一件事是能夠設計多個屏幕,但只使用一個窗口。截至目前,我們設計的方式是在第一個窗口中單擊「開始遊戲」之後,它會彈出第二個窗口到角色選擇屏幕。一旦你選擇了一個角色,它會打開第三個窗口。C#在窗口窗體中有一個窗口的多個GUI

我們更願意做的是能夠設計GUI來顯示一個基本的開啓閃屏,然後點擊「開始遊戲」會彈出一個新的「屏幕」,但在同一個窗口中。新屏幕應該從初始啓動屏幕擁有自己獨特的GUI。也是遊戲的一部分,我們將要放置一個帶有選項的暫停菜單。當用戶點擊暫停按鈕時,應該會出現一個新的「屏幕」,同樣在遊戲過程中您將看到主屏幕上的獨特GUI。

是否可以創建多個GUI,但只能使用窗口窗體中的一個窗口?如果沒有,我們怎麼能做出這樣的事情呢?

在此先感謝!

+1

您是否嘗試過用戶控件而不是表單? –

+0

術語:窗口==窗體。第一個問題是:它們應該平行開放還是並排開放?如果是這樣你需要幾個表格。如果沒有,您還有其他選項。 - 例如,您可以查看帶有多個TabPages的Tab。 – TaW

+0

你在問什麼是「MDI」,多文檔界面。您會發現很多關於此的文章,因爲它是十年前流行的UI,由WinForms直接支持。它不再流行,因爲它造成了很多混亂和混亂 –

回答

2

在這種情況下,您必須使用UserControl。用戶控件可以設置爲整體形式,然後只需交換您創建的UserControl即可。

在Visual Studio中創建一個UserControl項目,把你的用戶界面,在其中,基本上很相似,設計正常Form你只要把上的按鈕,標籤和其他的東西來包裝事件和邏輯,你準備好去。

您有必要實施一個全局邏輯或業務模型來處理或傳遞您正在創建的每個用戶控件的事件,以使您的應用程序具有統一模型。

Here是使用UserControl

您也可以申請過渡動畫,而不同的控件之間的交換,反正如果谷歌這些東西了,你會發現很多有用的數據的一個很好的教程。

+0

我還會補充說,在爲應用程序的每個視圖實現每個UserControl之後,在主窗體中,啓動時加載的窗體可以添加一個拆分面板或停靠面板將每個用戶控件鎖定在屏幕的特定部分。 – Raffaeu

0

您可以創建一個像控件一樣的嚮導,該控件可以具有自定義TabControl。然後每個標籤頁可以有不同的控件,你想放置。您還可以創建用戶控件,並將它們添加到標籤頁,這將使其易於維護。

自定義標籤頁:

public class CustomWizard : TabControl 
{ 
    protected override void WndProc(ref Message m) 
    { 
     // Second condition is to keep tab pages visible in design mode 
     if (m.Msg == 0x1328 && !DesignMode) 
     { 
      m.Result = (IntPtr)1; 
     } 
     else 
     { 
      base.WndProc(ref m); 
     } 
    } 

    protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.Tab) 
      return; 

     base.OnKeyDown(e); 
    } 

    private void InitializeComponent() 
    { 
     this.SuspendLayout(); 
     this.ResumeLayout(false); 

    } 
} 

然後,您可以在您的形式使用該選項卡,並有向前和後退按鈕。處理這些按鈕的點擊事件來回移動。