Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#小游戏:菜单画面,如何实现?_C#_Forms - Fatal编程技术网

c#小游戏:菜单画面,如何实现?

c#小游戏:菜单画面,如何实现?,c#,forms,C#,Forms,我正在用WinForms制作一个简单的图形游戏,目前我想在游戏开始时显示一个菜单。我唯一的问题是,我不确定应用程序本身的结构,到目前为止,这就是我所知道的: 1) 要有菜单表单和游戏表单。选择新游戏后,创建游戏表单并将其停靠到菜单表单-我无法处理菜单表单,因为应用程序将退出。或者我可以将messageloop切换到其他形式吗?我对此表示怀疑 2) 有一些主窗体,使我能够创建和处理菜单和游戏窗体 3) 完全不同的方式 在开发应用程序时,我经常使用的一种方法是使用主窗体作为视图的容器(视图是User

我正在用WinForms制作一个简单的图形游戏,目前我想在游戏开始时显示一个菜单。我唯一的问题是,我不确定应用程序本身的结构,到目前为止,这就是我所知道的:

1) 要有菜单表单和游戏表单。选择新游戏后,创建游戏表单并将其停靠到菜单表单-我无法处理菜单表单,因为应用程序将退出。或者我可以将messageloop切换到其他形式吗?我对此表示怀疑
2) 有一些主窗体,使我能够创建和处理菜单和游戏窗体
3) 完全不同的方式

在开发应用程序时,我经常使用的一种方法是使用主窗体作为视图的容器(视图是
UserControl
),其中包含一个用于添加视图的面板

你能做的是:

  • 定义两个用户控件,一个用于菜单,一个用于游戏逻辑。菜单视图应该为主窗体可以附加到的每个菜单项显示一个事件
  • 启动时,显示菜单控件。当调用“Play”事件时,主窗体应切换到游戏视图
  • 以下伪代码将帮助您切换视图:

    private void SwitchView(Panel container, UserControl newView)
    {
        if (container.Controls.Count > 0)
        {
            UserControl oldView = container.Controls[0] as UserControl;
            container.Controls.Remove(0);
            oldView.Dispose();
        }
    
        if (newView != null)
        {
            newView.Dock = Dock.Fill;
    
            // Attach events
            if (newView is ...)
            {
               ...
            }
    
            container.Controls.Add(newView);
        }
    }
    
    请注意,这段代码可能无法正确编译,我是从头开始写的。但它会给你一个大致的想法,这是可以做到的