Как преобразовать строку TextBox с десятичной в десятичную форму в c # Windows. - PullRequest
0 голосов
/ 20 ноября 2018

В моей базе данных есть столбец с десятичным (18, 0) типом данных.Когда я пытаюсь вставить, я получаю «Неправильный формат».Мне это нравится ...:

decimal amountToWithdraw = Convert.ToDecimal(txtAmountToTransfer.Text);

Допустим, если я напишу 25.89, то это выдаст мне сообщение об ошибке "неправильный формат". Оно работает с номерами отверстий, например, 25, но не с точкой 25.89

* 1005.* Я использую этот EventHandler для Textbox:
private void txtAmountToTransfer_KeyPress(object sender, KeyPressEventArgs e)
        {
            char ch = e.KeyChar;
            if(ch == 46 && txtAmountToTransfer.Text.IndexOf('.') != -1)
            {
                e.Handled = true;
                return;
            }

            if(!Char.IsDigit(ch) && ch != 8 && ch != 46)
            {
                e.Handled = true;
            }
        }

Это должно быть легко, но я пробовал со многими методами, но я не могу заставить его работать.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Попробуйте следующий подход:

private void txtAmountToTransfer_KeyPress(object sender, KeyPressEventArgs e)
{
  char ch = e.KeyChar;
  char decimalSeparatorChar = Convert.ToChar(Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator);
  if(ch == decimalSeparatorChar && txtAmountToTransfer.Text.IndexOf(decimalSeparatorChar) != -1)
  {
     e.Handled = true;
     return;
  }

  if(!Char.IsDigit(ch) && ch != 8 && ch != decimalSeparatorChar)
  {
     e.Handled = true;
  }
}

Тогда decimal.Parse(txtAmountToTransfer.Text) будет работать нормально.И убедитесь, что вы используете правильный десятичный разделитель при вводе чисел.

0 голосов
/ 20 ноября 2018

Попробуйте использовать

decimal amountToWithdraw = Convert.ToDecimal(txtAmountToTransfer.Text, CultureInfo.InvariantCulture);
...