Ограничение количества непрерывных запятых в текстовом поле

#c# #.net #winforms

#c# #.net #приложения WinForms #winforms

Вопрос:

как ограничить количество непрерывных «запятых» в текстовом поле? … например, это не должно позволять пользователю вводить более 2 запятых непрерывно

Комментарии:

1. Используйте регулярное выражение: regular-expressions.info/repeat.html

Ответ №1:

Я полагаю, это должно обрабатывать большинство сценариев:

 private void TextBox_TextChanged(object sender, EventArgs e)
{
    TextBox tb = sender as TextBox;
    if (tb != null)
    {
        int pos = tb.SelectionStart;
        int length = tb.Text.Length;
        tb.Text = tb.Text.Replace(",,", ",");
        int diff = length- tb.Text.Length;
        tb.SelectionStart = pos == 0 || diff == 0 ? pos : pos - diff;
    }
}
  

Это работает при вводе текста в TextBox , а также при вставке текста в него.

Ответ №2:

 private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyChar == ',')
    {
       if(TextBox.Text.Contains(",,"))
       {
           e.Handled = true;
       }
    }
}
  

Комментарии:

1. Вы хотите установить SuppressKeyPress = true , а не Handled , как описано здесь, в разделе примечания: msdn.microsoft.com/en-us/library /…