C # TextBox разрешить знак минус (-) только в начале строки - PullRequest
0 голосов
/ 13 ноября 2018

Извините, если это действительно простой вопрос, но я новичок в C #, и это мое первое приложение для Windows.

В приведенном ниже коде мой TextBox принимает только десятичную точку ",", знак минус "-", цифры, а также принимает ввод клавиш удаления и возврата на одну позицию (поправьте меня, если я ошибаюсь). Так что я могу вводить и удалять цифры, такие как:

-12.31
-.31

Проблема в том, что я также могу ввести что-то вроде:

12-

Есть ли способ ввести только "-", если это первый символ строки? Я попробовал Google, и я пытался что-то придумать, но ничего не получается.

И спасибо, что уделили время.

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsDigit(e.KeyChar) && (e.KeyChar != ',') && (e.KeyChar != '-') && (e.KeyChar != (char)8))
        {
            e.Handled = true;
        }
        if ((e.KeyChar == ',') && ((sender as TextBox).Text.IndexOf(',') > -1))
        {
            e.Handled = true;
        }

        if ((e.KeyChar == '-') && ((sender as TextBox).Text.IndexOf('-') > -1))
        {
            e.Handled = true;
        }
    }

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете проверить, где находится курсор, используя SelectionStart:

var textBox = (TextBox)sender;

if (e.KeyChar == '-' && (textBox.SelectionStart !=0 || textBox.Text.Contains("-"))) 
{
  e.Handled = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...