2017-08-07 79 views
-7

我一直試圖將我的int.parse更改爲int.tryparse,因爲我聽說這是一種更好的方法。我不斷收到錯誤,我真的不知道我做錯了什麼。編譯錯誤當使用int.TryParse C#

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 No overload for method 'TryParse' takes 1 arguments

+1

當出現任何錯誤時,什麼*錯誤,*和'indexbox.Text'裏面有什麼? – gravity

+0

你會得到什麼錯誤? –

+1

_「我不斷收到錯誤」_--這不是一個足夠具體的問題描述,而且您的問題不包括任何實際嘗試調用int.TryParse()(因此我們甚至無法猜測您的錯誤越來越多)。如果你想得到任何有用的答案,你需要大幅改善這個問題。 –

回答

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方法需要一個整數而不是布爾值。

+0

如果在轉換成功,我只是建議一點關於OUT參數的說明。另外,不知道爲什麼第一個「索引」與「新索引」...索引從未明顯使用。 – DRapp

+0

其實,失敗時'out'參數將被重新賦值爲'0'... –