0

通貨の値を入力する必要があるTextBoxを作成しましたが、10進値のテキストボックスに。(ドット)を入力できなくなりました。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 に答える