Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 2
Регистрация: 01.01.2015
Сообщений: 96
1

Запрет на ввод больше одного знака "-" в TextBox

29.05.2017, 19:51. Показов 4479. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        MainClass MCObject = new MainClass();
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            int x;
            if (int.TryParse(textBox1.Text, out x))
            {
                MCObject.X = x;
                if (x == 0)
                {
                    MessageBox.Show("Введённая строка не отображает число, допустимое для заданного типа");
                    textBox1.Focus();
                }
                else
                {
                    if(x <= 0)
                    {
                        label1.Text = label1.Text + Convert.ToString(MCObject.LessZero(MCObject.X)) + ";";
                        label2.Text = "x <= 0";
                    }
                    else
                    {
                        label1.Text = label1.Text + Convert.ToString(MCObject.MoreZero(MCObject.X)) + ";";
                        label2.Text = "x > 0";
                    }
                }
            }
        }
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char number = e.KeyChar;
            if (!Char.IsDigit(number) && number != 8 && number != 45) // цифры и клавиша BackSpace и -
            {
                e.Handled = true;
                textBox1.MaxLength = 5;
            }
        }
    }
Как запретить ввод больше одного знака "-", или хотя-бы обработать это исключение.
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2017, 19:51
Ответы с готовыми решениями:

Как в VBA в поле Textbox сделать запрет на ввод более одного слова (или запрет на ввод пробелов)?
Добрый день. Нужно, чтобы в поле TextBox можно было ввести не более одного слова (в противном...

DELPHI 7. Запрет на ввод минуса после знака и запятая
Ребят такая простая но проблема. Как реализовать так что бы в Edti.Text что бы минус вводился...

Запрет на ввод в textBox
Вот так я могу вводить в текст бокс только цифры , запятую, и backspace. private void...

Запрет на ввод в TextBox
Есть вот такая форма для поиска @using (Html.BeginForm(&quot;Result&quot;, &quot;Search&quot;, FormMethod.Get)) { ...

Запрет на ввод цифр в TextBox
Нужно, чтобы в TextBox вводились только буквы. Запрет на ввод букв удалось реализовать, а наоборот...

9
343 / 305 / 135
Регистрация: 14.03.2015
Сообщений: 1,140
Записей в блоге: 1
29.05.2017, 20:09 2
Лучший ответ Сообщение было отмечено 50VAJJ как решение

Решение

"тупо в лоб"
C#
1
if ((sender as TextBox).Content.Contains("-")) e.Handled = true;
1
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
29.05.2017, 20:17 3
50VAJJ,
А зачем? Пусть пользователь вводит, что хочет.
А вот если он введет не число, или число в неправильном формате, или число вне требуемого диапазона, то его (пользователя) нужно немедленно обругать посредством мессажбокса и указать, что стоит вводить, а чего не стоит. И сразу же прервать обработку текста, принятого из текстбокса. Тем более, что в строках 14 и 17 что-то подобное реализовано.
1
0 / 0 / 2
Регистрация: 01.01.2015
Сообщений: 96
29.05.2017, 20:42  [ТС] 4
Ну а как посчитать сколько знаков "-" было введено?
0
343 / 305 / 135
Регистрация: 14.03.2015
Сообщений: 1,140
Записей в блоге: 1
29.05.2017, 21:01 5
Лучший ответ Сообщение было отмечено 50VAJJ как решение

Решение

Цитата Сообщение от Даценд Посмотреть сообщение
А вот если он введет не число, или число в неправильном формате, или число вне требуемого диапазона, то его (пользователя) нужно немедленно обругать посредством мессажбокса и указать, что стоит вводить, а чего не стоит.
А зачем в таком случае давать пользаку возможность сделать ошибку и потом тыкать его этой же ошибкой?
1
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
29.05.2017, 21:44 6
Лучший ответ Сообщение было отмечено 50VAJJ как решение

Решение

Цитата Сообщение от bodynar Посмотреть сообщение
А зачем в таком случае давать пользаку возможность сделать ошибку и потом тыкать его этой же ошибкой?
Во-первых, это заставит пользователя включать мозг и выработает у него условный рефлекс. Есть же у пользователя возможность выпрыгнуть из окна n-го этажа, сунуть пальцы в розетку, съесть горсть земли. Но в детстве выработались условные и безусловные рефлексы и пользователь не прыгает, не сует и не ест.
К тому же, при запрете ввода пользователь пугается еще больше, ибо нет объяснения, из-за чего перестали вводиться циферки и буковки. А если при щелчке по кнопке появится описание ошибки, то он подумает и исправит ошибку. А спустя несколько ошибок и месажбоксов он научится вводить правильно.
1
309 / 317 / 119
Регистрация: 29.10.2011
Сообщений: 1,006
29.05.2017, 23:27 7
bodynar, а потом пользователь вставит текст "ПКМ->Вставить" и все вылетит) А если не вылетит из-за проверки уже внутри обработчика нажатия кнопки, то тогда, спрашивается, зачем было делать еще проверку в KeyPress ?

Тема "Защита от дурака" вообще достаточно спорная. Нет, делать проверки разумеется надо, но сейчас уж через чур пекутся о пользователях. Вот раньше помню нажмешь что-то не то, так сразу все вылетает или максимум покажут код ошибки. А че с ней делать - не ясно) Интернета для поиска нет. И это не просто любительское ПО, а ОС
0
343 / 305 / 135
Регистрация: 14.03.2015
Сообщений: 1,140
Записей в блоге: 1
30.05.2017, 08:51 8
sldp, Кхм, но я не указывал в каком-конкретно обработчике описывать поведение проверки. К тому же указал, что решение
Цитата Сообщение от bodynar Посмотреть сообщение
"тупо в лоб"
Даценд, Понял вашу точку зрения, спасибо.

Цитата Сообщение от Даценд Посмотреть сообщение
ибо нет объяснения, из-за чего перестали вводиться циферки и буковки
А как же лейбл "Введите вашу дату рождения в формате день-месяц-год"?
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
30.05.2017, 09:13 9
Цитата Сообщение от bodynar Посмотреть сообщение
А как же лейбл "Введите вашу дату рождения в формате день-месяц-год"?
А это 1-1-2017, 01-01-2017, 1-январь-17, 01-января-2017 г. или как-то по-другому?
Плохой лейбл.
Хороший - "Введите вашу дату рождения в формате день-месяц-год (например: 8-5-1990)".
Да и читает ли кто-нибудь эти надписи?
По мне, ругательный мессажбокс, да еще в сопровождении 5-й симфонии Бетховена, значительно эффектней и эффективней.
А вообще с датами проще всего, ибо есть MonthCalendar и DateTimePicker.
0
343 / 305 / 135
Регистрация: 14.03.2015
Сообщений: 1,140
Записей в блоге: 1
30.05.2017, 10:23 10
Даценд, Согласен, я плохой пример привел)

Цитата Сообщение от Даценд Посмотреть сообщение
Да и читает ли кто-нибудь эти надписи?
Тут уже смотря для кого приложение создается; средний ур. навыка использования пк и всего включающего.

Цитата Сообщение от Даценд Посмотреть сообщение
По мне, ругательный мессажбокс, да еще в сопровождении 5-й симфонии Бетховена, значительно эффектней и эффективней.
Как по мне - так пользаку проще будет прочитать лейбл и ввести корректное значение (в случае если можно некорректное) и продолжить действия, нежели ввести некорректное, получить в нос какой-нибудь нотификейшн и опять повторять операцию "до победного" - банально время экономится

Хотя, думаю, это уже из темы про менталитет ("да зачем мне эта инструкция, я сам разберусь")
0
30.05.2017, 10:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2017, 10:23
Помогаю со студенческими работами здесь

Запрет на ввод цифр в TextBox
Как запретить ввод цифр в поле TextBox?? Заранее спасибо)

Запрет на ввод букв в TextBox
Ребят, нужна ваша помощь. Нужно сделать так, чтобы при вводе любых символов (букв, точек, запятых и...

Запрет на ввод повторяющихся символов в textBox
Всем привет. Подскажите пожалуйста, как сделать так, чтобы был запрет на ввод повторяющихся...

Запрет на ввод русских символов в TextBox
Здравствуйте. Вопрос собственно следующий необходимо запретить ввод в окне textboxa русских...

Запрет на ввод букв в TextBox с кнопкой
Что надо сделать что бы в тестбоксе, когда поле пустое или в нем написаны не цифры кнопка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru