C# 多个 GUI,一个窗口形式为窗口

本文关键字:窗口 一个 GUI 多个 | 更新日期: 2023-09-27 18:37:08

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

我们宁愿做的是能够设计 GUI 以显示基本的打开启动画面,单击"开始游戏"将在同一窗口中显示一个新的"屏幕"。新屏幕应具有初始初始屏幕中自己唯一的 GUI。同样是游戏的一部分,我们将希望放置一个带有选项的暂停菜单。当用户点击暂停按钮时,应该会弹出一个新的"屏幕",同样是你在游戏过程中看到的主屏幕上有自己独特的GUI。

是否可以创建多个 GUI,但只能使用窗口形式的一个窗口?如果不是这样,我们怎么能让这样的事情发生呢?

提前感谢!

C# 多个 GUI,一个窗口形式为窗口

在这种情况下

,您必须使用UserControl。可以将用户控件设置为整个窗体,然后只需交换已创建的UserControl即可。

在Visual Studio中创建一个UserControl项,将用户界面放入其中,基本上与设计普通Form非常相似,您只需在其上放置按钮,标签和其他内容,然后连接事件和逻辑,就可以开始了。

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

这是一个关于使用UserControl的好教程

您还可以在不同控件之间切换时应用过渡动画,无论如何,如果您搜索这些内容,您会发现大量有用的数据。

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

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