C#窗口窗口中有一个窗口的多个GUI

时间:2015-01-12 12:29:20

标签: c# winforms

我的朋友和我正在尝试使用Visual Studios社区开发文本游戏。截至目前,我们已经以windows形式启动了我们的项目。我们坚持的一件事是能够设计多个屏幕,但只使用一个窗口。截至目前,我们设计的方式是在第一个窗口点击“开始游戏”后,弹出第二个窗口到字符选择屏幕。选择一个字符后,它会打开第三个窗口。

我们宁愿做的是能够设计GUI以显示基本的开放式启动画面,点击“开始游戏”会在同一个窗口中显示一个新的“屏幕”。新屏幕应该在初始启动画面中拥有自己独特的GUI。也是游戏的一部分,我们想要一个带有选项的暂停菜单。当用户点击暂停按钮时,应该会显示一个新的“屏幕”,再次使用你在游戏中看到的主屏幕上自己独特的GUI。

是否可以创建多个GUI,但只能使用窗口形式的一个窗口?如果没有,我们怎么能做出类似的事情?

提前致谢!

2 个答案:

答案 0 :(得分:3)

在这种情况下,您必须使用UserControl。 UserControl可以设置为整个表单,然后您只需交换已创建的UserControl

在visual studio中创建一个UserControl项目,将你的用户界面放在其中,基本上非常类似于设计一个普通的Form你只需要在其上放置按钮,标签和其他内容并连接事件和逻辑,你准备好了。

您可能需要实现全局逻辑或业务模型来处理或传递您正在创建的每个用户控件的事件,以便在您的应用程序中拥有统一的模型。

Here是使用UserControl

的好教程

您还可以在不同控件之间交换时应用转换动画,无论如何,如果你谷歌这些东西,你会发现大量有用的数据。

答案 1 :(得分: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);

    }
}

然后,您可以在表单中使用此选项卡,并具有下一个和后一个按钮。处理这些按钮的单击事件以来回移动。