Вы можете создать метод, чтобы проверить, является ли это число.
Вместо того, чтобы проверять .
в качестве десятичного разделителя, вы должны получить его от объекта CurrentCulture
, поскольку это может быть другой символ в зависимости от того, где вы находитесь в мире.
public bool isNumber(char ch, string text)
{
bool res = true;
char decimalChar = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
//check if it´s a decimal separator and if doesn´t already have one in the text string
if (ch == decimalChar && text.IndexOf(decimalChar) != -1)
{
res = false;
return res;
}
//check if it´s a digit, decimal separator and backspace
if (!Char.IsDigit(ch) && ch != decimalChar && ch != (char)Keys.Back)
res = false;
return res;
}
Затем вы можете вызвать метод в KeyPress
событии TextBox
:
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if(!isNumber(e.KeyChar,TextBox1.Text))
e.Handled=true;
}