重新启动表单应用程序的自定义类

时间:2014-12-03 19:27:37

标签: c# winforms

我仍在努力猜测数字游戏。现在我想使用另一种方法而不是Application.restart();。就个人而言,我正在考虑将代码放入我的Class 3中,然后从那里调用main中的方法。不幸的是,我没有成功。

我的问题是如何编写again方法然后在main中调用它?

我在Class3中的代码:

namespace WindowsFormsApplication3
{
    public class ExtensionMethods
    {
        public again()
        {
            Random Generator = new Random();
            globalVariableNumber.number = Generator.Next(1, 1000);

            var form1 = new Form1();
            form1.label2.Text = "Goodluck and have fun!";
            form1.BackColor = default(Color);
            form1.helpButton.Enabled = true;
            form1.buttonGuess.Enabled = true;
            form1.label4.Text = "";
            return again;
        }
    }
}

注意我为public again ();尝试了return again;无数的事情。{{1}}。这是我决定放弃之前的最新尝试。

1 个答案:

答案 0 :(得分:1)

您提供的代码存在一些问题,我会尝试从最严重的代码开始为您分解:

  • 代码正在创建一个新表单(var form1 = new Form1();),但从未显示过。在Windows窗体中执行此操作的正确方法是在Main方法中使用类似于以下内容的行:

    Application.Run(new Form1());
    

我的建议是关注this Microsoft的教程,该教程会自动为您生成该代码,并检查创建的代码。

  • 您的策略是每次用户想要再次播放时创建一个新表单。不推荐这样做;首选方法是将相同的表单重置为初始设置。此外,您不会处理该表格;调用相同的方法(again())将在屏幕上显示多个表单。

  • 您正在从表单外部访问表单成员(例如label4label2)。在Form1.cs中创建一个成员方法,它将在表单的代码中设置值。

  • 您的again()方法未声明其返回类型。如果它没有返回任何内容,请将其声明更改为:

    public void again()
    
  • 您将again()方法放在名为ExtensionMethods的类中。 C#类的名称ExtensionMethods通常用于声明static extension methods,我建议重命名该类(如果你最终觉得你需要这样的类)。