我创建了一个TextBox,其中必须输入货币值,但现在我无法在文本框中输入十进制值的。(点)。我在Text_changed事件中编写了代码。 代码
int cursorLocation = ((TextBox)(sender)).SelectionStart;
string inputval = ((TextBox)sender).Text;
inputval = inputval.Replace("*", "");
inputval = inputval.Replace("#", "");
inputval = inputval.Replace(",", "");
inputval = inputval.Replace(" ", "");
inputval = inputval.Replace("-", "");
Decimal inputval1 = Convert.ToDecimal(inputval);
((TextBox)sender).Text = inputval1.ToString("###,###");
cursorLocation = ((TextBox)(sender)).Text.Length;
//((TextBox)sender).Text = inputval;
((TextBox)(sender)).SelectionStart = cursorLocation;
答案 0 :(得分:0)
这是问题
((TextBox)sender).Text = inputval1.ToString("###,###");
每当您输入新字符时,整个textbox.text都会被格式为###,###
的新文本覆盖答案 1 :(得分:0)
我刚刚在textchanged事件下做了这个,这很有效,
try
{
string value = TextBox.Text.Replace(",", "");
long ul;
if (long.TryParse(value, out ul))
{
TextBox.TextChanged -= TextBox_TextChanged;
TextBox.Text = string.Format("{0:#,#}", ul);
TextBox.SelectionStart = TextBox.Text.Length;
TextBox.TextChanged += TextBox_TextChanged;
this.TextBox.MaxLength = 10;
}
}
catch { }