Windows Forms С#. Я хотел бы создать текстовое поле, которое автоматически изменяется каждый раз, когда пользователь вводит или удаляет один ключ из текстового поля. Я разработал часть кода.
//This will convert value from textbox to currency format when focus leave textbox
private void txtValormetrocubico_Leave(object sender, EventArgs e)
{
decimal cubic = Convert.ToDecimal(txtValormetrocubico.Text);
txtValormetrocubico.Text = string.Format("{0:c}", Convert.ToDecimal(cubic));
MessageBox.Show(txtValormetrocubico.Text);
}
//this only allow numbers and "." and "," on textimbox imput
private void txtValormetrocubico_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar)
&& e.KeyChar != '.' && e.KeyChar != ',')
{
e.Handled = true;
}
// only allow one decimal point
if (e.KeyChar == '.'
&& (sender as TextBox).Text.IndexOf('.') > -1)
{
e.Handled = true;
}
if (e.KeyChar == ','
&& (sender as TextBox).Text.IndexOf(',') > -1)
{
e.Handled = true;
}
}
Когда я в первый раз ввожу значение в текстовое поле, значение идеально преобразуется в денежный формат, например, 300
в $ 300.00
. Но я снова редактирую это значение текстового поля и нажимаю ввод, это дает ошибку: «Входная строка не была в правильном формате», указывающая на строку ниже:
decimal cubic = Convert.ToDecimal(txtValormetrocubico.Text);
Я думаю, что проблема вызвана тем, что значение уже в десятичном формате. Поэтому, когда я нажимаю на поле и снова нажимаю ввод, это вызывает ошибку, потому что значение не может быть проанализировано. Как мне избежать этой ошибки?
EDIT: Мой предыдущий вопрос был моим первым. Поскольку я новый пользователь и не очень хорошо разбираюсь в C#, я забыл опубликовать свой код. Изучив еще немного, я заставил часть этого работать. Остается только эта маленькая проблема. Пожалуйста, проголосуйте, я был забанен и не могу задавать новые вопросы, потому что у меня было 7 голосов против.
Спасибо ребята.