使用int.TryParse时的编译错误C#

时间:2017-08-07 19:19:33

标签: c# winforms compiler-errors

我一直试图将我的int.parse改为int.tryparse,因为我听说这是一种更好的方法。我一直在犯错误,我真的不知道自己做错了什么。

int index = this.Controls.GetChildIndex(WorkflowStepPanel, false);
this.Controls.SetChildIndex(WorkflowStepPanel, 
int.Parse(WorkflowStepPanel.indexBox.Text));

我试过这段代码:

 int index = this.Controls.GetChildIndex(WorkflowStepPanel, false);
 this.Controls.SetChildIndex(WorkflowStepPanel, 
 int.TryParse(WorkflowStepPanel.indexBox.Text));

但是得到这个编译错误:

  

CS1501没有超载的方法' TryParse'需要1个参数

1 个答案:

答案 0 :(得分:3)

Int32.TryParse只要能够将输入转换为整数,就会返回一个布尔值。您可以利用该行为来避免程序因用户输入的无效数据而生成运行时异常,如下所示:

int newIndex = 0;
if (Int32.TryParse(WorkflowStepPanel.indexBox.Text, out newIndex))
{
    int index = this.Controls.GetChildIndex(WorkflowStepPanel, false);
    this.Controls.SetChildIndex(WorkflowStepPanel, newIndex);
}
else
{
    MessageBox.Show(String.Format(
        "You entered {0} and that's not a valid number", 
        WorkflowStepPanel.indexBox.Text));
}

这个TryParse方法可以尝试转换整数值中的第一个参数。如果成功,则解析的值将被放入out变量,该方法将返回true。如果输入无效,方法将返回falseout变量将设置为零。

您的代码生成错误可能是因为SetChildIndex方法需要整数而不是布尔值。