0

我创建了一个必须在其中输入货币值的文本框,但现在我无法在文本框中输入 .(dot) 以获取十进制值。我已经在 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;
4

2 回答 2

0

这就是问题

((TextBox)sender).Text = inputval1.ToString("###,###");

每当您输入新字符时,整个 textbox.text 都会被格式为 ###,### 的新文本覆盖

于 2012-07-31T07:51:16.013 回答
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 { }
于 2012-08-08T11:54:09.733 回答