Window 形式的一个 Window 的 C# 多个 GUI

C# Multiple GUIs With One Window in Window Form

我和我的朋友正在尝试使用 Visual Studios Community 开发文字游戏。截至目前,我们已经以 windows 形式开始了我们的项目。我们坚持的一件事是能够设计多个屏幕但只使用一个 window。截至目前,我们的设计方式是在您单击第一个 window 上的 "Start Game" 后,它会弹出第二个 window 字符 select 屏幕。一旦你 select 一个角色,它会打开第三个 window.

我们宁愿做的是能够将 GUI 设计为显示基本的启动画面,然后单击 "Start Game" 会弹出一个新的 "screen",但在相同的 window.新屏幕应该有它自己与初始启动屏幕不同的 GUI。作为游戏的一部分,我们将要放置一个带有选项的暂停菜单。当用户单击暂停按钮时,应该会弹出一个新的 "screen",同样会在游戏期间从主屏幕中看到它自己独特的 GUI。

是否可以创建多个 GUI 但仅使用一个 window 形式的 window?如果没有,我们如何才能让这样的事情发生?

提前致谢!

在这种情况下您必须使用 UserControl。可以将 UserControl 设置为一个完整的窗体,然后您只需交换您创建的 UserControls。

在 visual studio 中创建一个 UserControl 项目,将您的用户界面放入其中,基本上与设计普通 Form 非常相似,您只需在其上放置按钮、标签和其他东西并连接事件和逻辑,您就可以开始了。

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

Here 是使用 UserControl

的好教程

您还可以在不同控件之间切换时应用过渡动画,无论如何,如果您google这些东西,您会发现很多有用的数据。

您可以创建一个类似向导的控件,它可以有一个自定义的 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);

    }
}

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