我试图建立在C#中的TextBox
/Windows窗体项目,这样,当使用键盘或数字键盘在价格的用户类型,文本框会格式化输入序列看起来像一个价格。转换序列为价格
示例:用户类型1-5-0(减去破折号),文本框的文本值将为1.50美元。
这里是我想要的代码:
private string KeySequence;
// ...
private void TxtValue_KeyPress(object sender, KeyPressEventArgs e)
{
if(char.IsDigit(e.KeyChar))
{
KeySequence += e.KeyChar.ToString();
if (KeySequence.Length > 0)
{
txtValue.Text = "$" + (decimal.Parse(KeySequence)/100).ToString("0.00");
}
}
}
的问题是,每当我在一个值类型,第一个字符始终是我打的最后一个关键,其次是“$”和价钱。所以如果我输入150,格式化文本显示为:0$1.50
。
我就在想,这是由于KeyDown
事件KeyPress
之前被调用,所以我试图与处理代码为压制它:
private void TxtValue_KeyDown(object sender, KeyEventArgs e)
{
txtValue.Clear();
}
但是,这仍然没有工作。
我能做些什么来阻止第一个字符出现?
要取消按键,设定'e.Handled'到TRUE; –
工作就像一个魅力。谢谢! –