Запретите подчеркивание "_" в конце содержимого TextBox, которое будет добавлено - PullRequest
0 голосов

Я работаю с никами (с заданными именами).

Когда пользователь регистрируется, вы должны ввести свой ник, он же не может содержать символы (кроме подчеркивания), только цифры и буквы.

Я использую событие KeyPress моего TextBox имени пользователя для этого:

private bool Handled = false;

private void Username_KeyPress(object sender, KeyPressEventArgs e)
{
    if (Char.IsLetterOrDigit(e.KeyChar)) this.Handled = false;
    else
    {
        if (e.KeyChar == '\b') this.Handled = false; //Backspace key
        else
        {
           if (e.KeyChar == '_' && !((TextBox)sender).Text.Contains("_") && ((TextBox)sender).Text.Length > 0) this.Handled = false;
            else this.Handled = true;
        }
    }

    e.Handled = Handled;
}

Этот фрагмент кода предотвращает то, что символы (отличные от "_"), содержимое начинается с "_" и использует более одного написанного подчеркивания "H_E_L_L_O", но они должны предотвратить использование символа подчеркивания в конце Я имею в виду:

Разрешить: Hell_o

Предотвратить: Hello_

Возможно ли это?

Edit:

Я также использовал String.Last(), но результат тот же:

if(TextBox.Text.Last() == '_')
{
   // Handled = true;
}

1 Ответ

0 голосов
/ 02 мая 2018

Вы не можете сделать это, если не можете прочитать мысли пользователя :) В конце концов, пользователь может захотеть поставить Hell_o, как в вашем примере, но чтобы напечатать, ему сначала нужно набрать «Hell_», чтобы вы могли ' не остановить их в этот момент. Лучшее, что вы, вероятно, собираетесь сделать, - это обработать событие «Проверка» в элементе управления UserName.

private void UserName_Validating(object sender, CancelEventArgs e) {
    errorProvider1.SetError(UserName, "");
    if (UserName.Text.EndsWith("_")) {
        errorProvider1.SetError(UserName, "Stuff is wrong");
    }            
}

Затем нажмите кнопку «Зарегистрироваться» или что-то еще, проверьте, является ли этот элемент управления (или любой другой элемент управления, который вас интересует) ошибочным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...