2015-01-12 140 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); 

    } 
} 

然后,您可以在您的形式使用该选项卡,并有向前和后退按钮。处理这些按钮的点击事件来回移动。