![](/img/trans.png)
[英]Input string was not in a correct format. Converting String to double
[英]Input string was not in a correct format. Converting string to int
輸入字符串格式不正確。 我在運行時獲得了一個異常“System.FormatException”。
Follwing線顯示異常 -
public int Task
{
get
{
return Int32.Parse(TaskText.Text);
}
set
{
TaskText.Text = value.ToString();
}
}
public int Project
{
get
{
return Int32.Parse(ProjectText.Text);
}
set
{
ProjectText.Text = value.ToString();
}
}
我也嘗試過 -
Convert.ToInt32(TaskText.Text)
Convert.ToInt32(ProjectText.Text)
我需要將這些傳遞給以下構造函數,
Harvest_TimeSheetEntry entry = new Harvest_TimeSheetEntry(client,starttime,stoptime,task,project);
此構造函數存儲在某個類中,其中task和project作為整數參數。 我無法改變它,因為如果我改變了,它會影響其他代碼。
看起來好像是從接受用戶輸入的控件獲取輸入,這只是要求失敗,因為用戶可能會輸入不表示整數值的內容。 您可以使用TryParse
來避免這種情況:
var result = 0;
if (int.TryParse(TaskText.Text, out result)) {
return result;
}
return 0;
所以,如果TaskText.Text == "1"
的值,這將成功; 如果TaskText.Text == "aaaa"
的值,這將失敗 - 並返回零。 您的示例會像經驗那樣引發相應的異常。
但是,異常可能是正確的事情,如果您無法處理錯誤的值,沒有替代方案,並且應用程序依賴於輸入來繼續前進。 更有可能的是,您可以對輸入字段進行一些驗證,以防止提交錯誤數據。
由於您的Harvest_TimeSheetEntry
構造函數需要task
和project
為整數,因此您必須具有與不同任務和項目對應的整數列表。 現在你不能指望Int32
知道哪個任務對應哪個號碼,可以嗎?
我建議你使用ComboBoxes
for TaskText
和ProjectText
。 然后,您可以為每個ComboBoxItem.Tag
分配正確的相應整數。
請注意,這遠遠超出了您應該從SO中得到的答案。
如果您不使用MVVM或綁定,您可以在需要之前進行檢查。 Ť
int task;
int project;
if(!Int32.TryParse(TaskText.Text, out task))
{} //errorhandling here
if(!Int32.TryParse(ProjectText.Text, out project))
{}//errorhandling here
//all fine
var entry = new Harvest_TimeSheetEntry(client,starttime,stoptime,task,project);
您必須檢查是否可以將其解析為Integer
嘗試
Int32 foo =0;
if (Int32.TryParse(TaskText.Text, out foo))
{
return foo;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.