根据用户输入使程序运行多次

时间:2014-01-26 22:42:01

标签: c# forms recursion textbox

我有一个Windows窗体程序,我希望根据用户指定的数字“运行”一定次数。

我正在使用Visual Studio 2013和C#。

我有一个程序,有16个图片框,并随机分配图片到其中5个框。此人必须选择正确的图片顺序。如果他们这样做,他们会得到奖励,如果他们选择了错误,他们就会受到恼人的声音的惩罚。

我的第一个表单有一个TextBox,用户可以指定'numberOfTrials' 我有第二个表单,它接受TextBox的值并将其转换为int。

我希望第二个表单上的主程序运行用户指定的次数。

如果我在不使用此变量的情况下运行一次,我的程序就能正常工作。

我尝试在启动程序的方法中使用for循环,但这不起作用。它只是使所有的图片框变白了。

然后我尝试在InitializeComponent()方法周围使用for循环,但是,这又使所有的图片框都变白了。

我的for循环使用textbox变量:

for (int cycles = 0; cycles < numberOfTimesThrough; cycles++)

我通过解析文本框变量来创建numberOfTimesThrough变量。

也许我这样做错了?

在第一张表格上:

在班级的顶端:

public static string trialNumberString;

在按下确认按钮时调用的方法内部:

trialNumberString = tbTrialNumber.Text.ToString();

在第二种形式上:

在班级的顶端:

//Integer value for the string of trials
public static int numberOfTimesThrough;
bool canConvert = Int32.TryParse(Settings.trialNumberString, out numberOfTimesThrough);

这是获取第一个表单上文本框的字符串值的正确方法吗? 我确信添加一个for循环应该使程序重复,所以我将文本框字符串解析为int的方式肯定有问题。 使用这个程序的人不想打破它,所以输入到第一个表单上的文本框中的数据总是在1和25之间。我是否仍然需要在字符串转换时使用try catch?

对此的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

你可以通过访问它的Text属性来获取textBox的值,并从那里解析它返回int的字符串。

string s = textBox.Text;
int i = int.Parse(s);

使用任何必要的验证逻辑。

答案 1 :(得分:1)

  • 您不需要重新运行整个程序只是为了多次显示一个表单:相反,只需实例化第二个表单的多个实例并按顺序显示它们。

  • 要安全地将文本解析为数字,可以使用int.TryParse()

答案 2 :(得分:0)

当应用程序关闭时,静态变量也会从内存中删除。为了保存设置,您需要将其保存到单独的文件中然后读取。简单的读/写设置方法是使用ApplicationSettings的内置选项:http://msdn.microsoft.com/en-us/library/vstudio/a65txexh(v=vs.100).aspx