2009-06-29 48 views
3

我有一個文本框,我只想要數字。但是如果我輸錯了數字,我不能退格來糾正它。我怎樣才能讓後臺工作。由於只爲數字掩蓋文本框,但不會接受BackSpace

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (Char.IsNumber(e.KeyChar) != true) 
     { 
      e.Handled = true; 
     } 
    } 
+2

不能使用的蒙面文本框? – shahkalpesh 2009-06-29 22:14:09

回答

3

你可以添加一個檢查,以便控制字符,以及:

if (Char.IsControl(e.KeyChar) != true && Char.IsNumber(e.KeyChar) != true) 
{ 
    e.Handled = true; 
} 

更新:響應於人-B的對代碼的評論/他暗示下面的風格(這也是我怎麼會親自寫):

if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar)) 
{ 
    e.Handled = true; 
} 
+1

難道你不只是使用!Char.IsControl(e.KeyChar)和!Char.IsNumber(e.KeyyChar)而不是!= true? – 2009-06-29 22:12:38

+0

@ person-b:這就是我親自編寫它的方式,但是我選擇讓我的代碼遵循JimDel的約定,以專注於功能而不是編碼風格。 – 2009-06-29 22:15:21

+0

我不認爲在這種情況下允許控制字符。例如製表符是控制字符,但據我瞭解,作者只需要數字。 – arbiter 2009-06-29 22:59:51

0
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!Char.IsNumber(e.KeyChar) && e.KeyCode != Keys.Back) 
      e.Handled = True; 
} 
0

一個稍微乾淨上面的格式:

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    e.Handled = !(Char.IsNumber(e.KeyChar) || (e.KeyChar==Keys.Back)); 
} 
1

您也可以覆蓋框TextChanged事件:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    string text = (sender as TextBox).Text; 

    StringBuilder builder = new StringBuilder(String.Empty); 

    foreach (char character in text) 
    { 
     if (Char.IsDigit(character)) 
     { 
      builder.Append(character); 
     } 
    } 

    (sender as TextBox).Text = builder.ToString(); 
} 

請注意,您必須在代碼添加到設置插入符位置。

3

正確答案是:

private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    e.Handled = !сhar.IsNumber(e.KeyChar) && (e.KeyChar != '\b'); 
} 
0
private void txt_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b') 
    { 
     // Allow Digits and BackSpace char 
    }   
    else 
    { 
     e.Handled = true; 
    } 
} 

參考鏈接也:Masking Textbox to accept only decimals小數/ 12209854#12209854