多次回到以前的形式

本文关键字: | 更新日期: 2023-09-27 18:29:21

我正在用c#制作一个有很多关卡的游戏,每次你输了,我都想转到一个给你很多选项的表单,包括"重试"
我知道如何访问该表单并重新加载您失败的级别,但我想知道是否有任何方法可以只创建一次选项表单,以及每次单击Retry重新加载PREVIOUS表单时。

多次回到以前的形式

您拥有的众多选项之一是使用Singleton模式。这是一个非常快速和过于简化的例子,但你可以这样做:

public class OptionsForm : Form
{
    private static OptionsForm _instance;
    public static OptionsForm Options
    {
        get
        {
            if (_instance == null) _instance = new OptionsForm();
            return _instance;
        }
    }
    private int ActualLevel; //variable to hold the level to "go back to/retry"
    public void ShowOptions(int actualLevel)
    {
        ActualLevel = actualLevel;
        //do any processing required
        Show(); // or ShowDialog(); depending on your needs
    }
}

然后你会做这样的事情:

public void OnLevelFailed() //whatever you call when the user loses the level
{
    OptionsForm.Options.ShowOptions(thisLevel);
}

查看C#中对象的作用域,例如转到MSDN。这个网页很古老,但能教授好的概念。

你基本上需要设置你的选项表,以保持在范围内。一种方法是将该表单的对象设置为静态。然后你可以随心所欲地重复使用它。

这增加了很多复杂性。您必须捕获Form.Clossing事件,然后取消关闭,而不是Hide处理表单。完成后,您可能需要手动处理表单的Dispose

如果你只想这样做是因为它节省了.NET每次创建表单的工作量,那么不要这样做。NET非常擅长创建表单,并不介意这样做。做这一切的唯一好理由是,每次打开表单时,用户设置的任何选项都保持不变,而且有一些方法被认为是更好的编码实践,例如模型视图控制器-其概念是将数据(用户的选项)与数据视图(显示这些选项的表单)分开。

从编程游戏开始是雄心勃勃的。祝你好运

相关文章:
  • 没有找到相关文章