多次回到上一个表格

时间:2016-01-07 20:39:39

标签: c# forms button

我在c#中制作了一个有很多级别的游戏,每当你输了,我想去一个给你很多选择的表格,包括“重试”。
我知道如何访问该表单并重新加载失败的级别,但我想知道是否有任何方法我只能创建一次Options表单,并且每次单击Retry重新加载PREVIOUS表单时。

2 个答案:

答案 0 :(得分:1)

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

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);
}

答案 1 :(得分:1)

查看C#中对象的范围,例如转到MSDN。该网页很古老,但教授了很好的概念。

您基本上需要设置选项表以保持范围。一种方法是将该表单的对象设置为静态。然后,您可以根据需要重复使用它。

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

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

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