powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обработать первый введенный символ в текстбокс отдельно от последующих
6 сообщений из 6, страница 1 из 1
Как обработать первый введенный символ в текстбокс отдельно от последующих
    #38937835
2viper2viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу настроить проверку в поле Тексбокса на введение знака "-"
чтобы пользователь мог внести его только первым символом
Питаюсь решить в этом направлении но пока без результата

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            string searchstr = "-";
            int index = textBox1.Text.IndexOf(searchstr);
            if (index > 0)
            {
                if (e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57))
                    e.Handled = true;
            }
            else
            {
                if (e.KeyChar != '-' && e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57))
                    e.Handled = true;
            }
             
        }

...
Рейтинг: 0 / 0
Как обработать первый введенный символ в текстбокс отдельно от последующих
    #38937849
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
How to: Create a Numeric Text Box

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
protected override void OnKeyPress(KeyPressEventArgs e)
{
    base.OnKeyPress(e);

    var keyInput = e.KeyChar.ToString();
    var nfi = System.Globalization.CultureInfo.CurrentCulture.NumberFormat;

    if (Char.IsDigit(e.KeyChar))
    {
        // Digits are acceptable
    }
    else if (keyInput.Equals(nfi.NumberDecimalSeparator) && Text.IndexOf(nfi.NumberDecimalSeparator) == -1 && !integer)
    {
        // Decimal separator is allowed only once for non-integers
    }
    else if (keyInput.Equals(nfi.NegativeSign) && SelectionStart == 0 && Text.IndexOf(nfi.NegativeSign) == -1 && !positive)
    {
        // Negative sign allow only once at the beginning
    }
    else if (e.KeyChar == '\b')
    {
        // Backspace key is allowed
    }
    else if (ModifierKeys == Keys.Control && e.KeyChar == 22)
    {
        // Paste is allowed
    }
    else
    {
        // Skip the invalid key
        e.Handled = true;
    }
}
...
Рейтинг: 0 / 0
Как обработать первый введенный символ в текстбокс отдельно от последующих
    #38937923
2viper2viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, спасибо, буду разбираться
...
Рейтинг: 0 / 0
Как обработать первый введенный символ в текстбокс отдельно от последующих
    #38938142
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В VB.Net я сделал бы так.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 Dim tmp as String
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        tmp = TextBox1.Text
        If Len(tmp) > 1 Then
            If Mid$(tmp, Len(tmp), 1) = "-" Then
                TextBox1.Text = Mid$(tmp, 1, Len(tmp) - 1)
                TextBox1.SelectionStart = Len(tmp)
                Exit Sub
            End If
        End If
    End Sub
...
Рейтинг: 0 / 0
Как обработать первый введенный символ в текстбокс отдельно от последующих
    #38938288
2viper2viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так решил задачу. Заодно добавил проверки на внесение "-" не первым символом и 0 первым

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != '-' && e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57))
            {
                e.Handled = true;
            }
            if (e.KeyChar == '-' && (sender as TextBox).Text.StartsWith("-"))
            {
                e.Handled = true;
            }

            int s = textBox2.Text.Length;
            if (e.KeyChar == '-' && s > 0)
            {
                e.Handled = true;
            }

            int w = textBox2.Text.Length;
            if (e.KeyChar == '0' && w == 0)
            {
                e.Handled = true;
            }
        }
...
Рейтинг: 0 / 0
Как обработать первый введенный символ в текстбокс отдельно от последующих
    #38938290
2viper2viper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Slava_Psk, не увидел Ваше сообщение. Но логика решения та же :)

Slava_Psk, skyANA, Спасибо за идеи
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обработать первый введенный символ в текстбокс отдельно от последующих
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]