Windows Forms C# - 我想制作一个文本框,每次用户键入或从文本框中删除一个键时自动更改。我开发了部分代码。
//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);
我认为问题是由于该值已经是十进制格式。因此,当我单击该字段并再次按 Enter 时,会导致错误,因为无法解析该值。如何避免此错误?
编辑: 我之前的问题是我的第一个问题。由于我是新用户并且对 C# 了解不多,所以我忘记发布我的代码。在研究了更多之后,我做了一部分工作。只剩下这个小问题了。请投票,我被禁止并且不能提出新问题,因为我有 7 票反对。
多谢你们。