2014-01-29 71 views
2

我需要在文本框中只允許gps座標值,格式將是2位數,然後是小數點後5位數。例如。 「28.98706」。文本框中的十進制值

我該如何做到這一點?如果有人能夠解釋使用正則表達式和正則表達式的區別,我也會很感激。

+3

RegEx是正則表達式的縮寫。 –

+0

您是否知道有另一個有效的GPS表示,分鐘,秒等? (萬一) – Samuel

回答

1

大概numericUpDown會更好。但這裏有一個可能的解決方案:TextBox

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (char.IsControl(e.KeyChar)) return; 

    if (e.KeyChar == '.' && textBox1.Text.Length < 2) e.Handled = true; 

    if (!char.IsDigit(e.KeyChar) && e.KeyChar != '.') e.Handled = true; // check for non-digit character 

    if (textBox1.Text.Length == 2 && e.KeyChar != '.') e.Handled = true; // you should type dot '.' 

    if (textBox1.Text.Length == 8) e.Handled = true; 
} 
+0

雖然看起來不錯,你不能當文本框是全下嚥的KeyEvent。 F.E.你將無法從文本框的焦點製表出來。我會使用TextChanged事件,而不是如果Text.Length超過8 – Tarec

+0

@Tarec我想用'如果(char.IsControl(e.KeyChar))返回刪除最後一個數字;'我們可以:)) –

+0

謝謝大家可能的解決方案!非常感激! – BabyDoll

4

請勿使用文本框。改爲使用NumericUpDown - 它以十進制格式存儲值,允許您設置小數點精度。

也正則表達式=正則表達式。

0

正則表達式和正則表達式是一回事。使用它來驗證用戶對允許值模式的輸入。

例子:

if(!Regex.IsMatch("[0-9]+\.?[0-9]*", TextBox.Text)) 
    return false; 

return true; 
相關問題