#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 /…