Как получить входную строку в правильном формате при textchanged?
Всем привет.
У меня есть форма, в которой есть текстовые поля. Каждое текстовое поле имеет TextChanged на нем, чтобы сделать некоторые вычисления. У меня есть валидатор регулярных выражений, чтобы проверить, вводит ли пользователь символ вместо числа. Если пользователь вводит 10525.5, он должен пересчитать его до 10,526, но я получаю эту ошибку:
Input string was not in a correct format.
Почему я получаю эту ошибку и каков наилучший способ ее исправить?
Вот мой HTML код для текстовых полей:
<pre><asp:TextBox ID="TextBox1" runat="server" Width="180px" ToolTip="IPEDS Part C, Line 01, Column 01" AutoPostBack="True" ontextchanged="TextBox1_TextChanged" ValidationGroup="Check">0</asp:TextBox> <asp:RegularExpressionValidator ID="RegularExpressionValidator14" runat="server" ControlToValidate="TextBox1" CssClass="style18" ErrorMessage="You Must Enter Instruction" ForeColor="Red" ValidationExpression="^[-]?\d+$." ValidationGroup="Check"></asp:RegularExpressionValidator>
Вот код C# для вычислений, а также добавления и удаления запятых:
protected void TextBox1_TextChanged(object sender, EventArgs e) { int a = Convert.ToInt32(TextBox1.Text.Replace(",", "")); int b = Convert.ToInt32(TextBox2.Text.Replace(",", "")); int c = Convert.ToInt32(TextBox3.Text.Replace(",", "")); int d = Convert.ToInt32(TextBox4.Text.Replace(",", "")); int f = Convert.ToInt32(TextBox5.Text.Replace(",", "")); int g = Convert.ToInt32(TextBox6.Text.Replace(",", "")); int j = Convert.ToInt32(TextBox7.Text.Replace(",", "")); int k = Convert.ToInt32(TextBox8.Text.Replace(",", "")); int l = Convert.ToInt32(TextBox9.Text.Replace(",", "")); int m = Convert.ToInt32(TextBox10.Text.Replace(",", "")); TextBox88.Text = Convert.ToString(a + b + c + d + f + g + j); TextBox89.Text = Convert.ToString(a + b + c + d + f + g + j + k + l + m); TextBox1.Text = string.Format("{0:0,0}", double.Parse(TextBox1.Text)); TextBox2.Focus();
Ошибка источника находится по адресу:
int a = Convert.ToInt32(TextBox1.Text.Replace(",", ""));
Что я уже пробовал:
Я попытался прокомментировать область расчета, а также округление и количество преобразованных работ.
protected void TextBox1_TextChanged(object sender, EventArgs e) { TextBox1.Text = string.Format("{0:0,0}", double.Parse(TextBox1.Text)); TextBox2.Focus(); }