Форматирование текстового поля (номера телефонов, Мобильные номера, электронные письма)

Я хотел бы знать, как использовать textbox в различных форматах. Я пытался использовать формат.String (), так как это’ решение’, которое я нашел в интернете после проведения некоторых исследований, но это не закончилось хорошо для меня.

  private void RegHomePhoneTBox_TextChanged(object sender, EventArgs e)
    {
        string s = RegHomePhoneTBox.Text;
        double sAsD = double.Parse(s);
        RegHomePhoneTBox.Text = string.Format("{0:###-####}", sAsD).ToString();
    }

Это был блок кода, который я использовал, и он просто продолжает выдавать ошибку.

Необработанное исключение типа ‘ System.FormatException ‘ произошло в
mscorlib.dll дополнительная информация: строка ввода не была в правильном
формат.

2 ответа

  1. Я бы предложил вам использовать a MaskedTextBox. Он работает так же, как обычное текстовое поле, но пользователь вынужден вводить текст в определенном формате.

    В вашем конкретном случае просто установите для Maskсвойства значение "000-0000".

    Вот документация:

    https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask (v=110).aspx

    Есть много других свойств, в MaskedTextBoxкоторых очень полезны, как MaskCompleted.

  2. Попробовать это:

      private void RegHomePhoneTBox_TextChanged(object sender, EventArgs e)
        {
            string s = RegHomePhoneTBox.Text;
            if (s.Length == 7)
            {
               double sAsD = double.Parse(s);
               RegHomePhoneTBox.Text = string.Format("{0:###-####}", sAsD).ToString();
            }
            if (RegHomePhoneTBox.Text.Length > 1)
                 RegHomePhoneTBox.SelectionStart = RegHomePhoneTBox.Text.Length;
            RegHomePhoneTBox.SelectionLength = 0;
        }