2015-10-25 28 views
1

這段代碼將HEX值從輸入轉換爲十進制,並將其放到另一個文本框中。當您在空文本框中退格,一個FormatException被拋出,並指出這條線:按下退格鍵時的FormatException

int decValue = int.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber); 

完整的處理程序:

private void textBox3_TextChanged(object sender, EventArgs e) 
{ 
    if (textBox3.Focused == true) 
    { 
     int decValue = int.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber); 
     string decimalnumber = Convert.ToString(decValue, 10); 
     string binary = Convert.ToString(decValue, 2); 
     textBox1.Text = decimalnumber; 
     textBox2.Text = binary; 
    } 
} 

回答

0

你必須添加一個空的檢查是這樣的:

private void textBox3_TextChanged(object sender, EventArgs e) 
{ 
    if (textBox3.Focused == true) 
    { 
     if (string.IsNullOrEmpty(textBox3.Text)) 
     { 
      textBox1.Text = ""; 
      textBox2.Text = ""; 
     } 
     else 
     { 
      int decValue = int.Parse(textBox3.Text, System.Globalization.NumberStyles.HexNumber); 
      string decimalnumber = Convert.ToString(decValue, 10); 
      string binary = Convert.ToString(decValue, 2); 
      textBox1.Text = decimalnumber; 
      textBox2.Text = binary; 
     } 
    } 
} 

我推薦使用TryParse檢查用戶是否放入非十六進制字符,如特殊字符。

int decValue = 0; 
if (int.TryParse(textBox3.Text, System.Globalization.NumberStyles.HexNumber, null, out decValue)) 
{ 
    string decimalnumber = Convert.ToString(decValue, 10); 
    string binary = Convert.ToString(decValue, 2); 
    textBox1.Text = decimalnumber; 
    textBox2.Text = binary; 
} 
+0

謝謝各位優秀的解決方案的工作! –

1

FormatException表示輸入字符串對於選定樣式的格式不正確。在你的情況下,我想,問題是由空字符串引起的。

您可以檢查空字符串值

if (textBox3.Focused == true && !string.IsNullOrEmpty(textBox3.Text)) { 
    ... 
} 

,或者您可以使用int.TryParse

int decValue; 
if(int.TryParse(textBox3.Text, NumberStyles.HexNumber, null, out decValue)) { 
    ... 
} 
相關問題