我有一个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?
对此的任何帮助将不胜感激。
答案 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