Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
 Аватар для Mr John Shepard
1 / 1 / 0
Регистрация: 24.10.2014
Сообщений: 35

Как создать условие if внутри switch? (обработчик клавиш)

10.10.2016, 12:04. Показов 4541. Ответов 10

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите пожалуйста, как создать условие if внутри switch? Есть обработчик клавиш:
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
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //получаем символ нажатой клавиши
            char sybol = e.KeyChar;
            
            //проверяем какая кнопка была нажата
            switch (sybol)
            {
                
                case '0':
                    //перечисляем действия соответствующие нажатой клавише 
                    //вызываем метод соответствующий определенному баттону(объекту)
                    keyZero_Click(keyZero, null);
                    break;
 
                    case '1':
                    keyZero_Click(keyOne, null);
                    
            ...
                        case '+':
                    keyPlus_Click(keyPlus, null);
                    break;
 
                case '-':
                    keyPlus_Click(keyMinus, null);
                    break;
 
            }
        }
Как мне сюда вписать условие при котором нельзя будет нажать на клавиши + и - если textBox1 пустой?

Как я понял конструкция if не работает внутри swith'a
C#
1
2
3
4
5
6
7
if (textBox1.Text.Length == 0) { case '+':
                    keyPlus_Click(keyPlus, null);
                    break;
 
                case '-':
                    keyPlus_Click(keyMinus, null);
                    break;}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2016, 12:04
Ответы с готовыми решениями:

Как в классе создать обработчик событий нажатий клавиш
Нужно создать обработчик нажатия клавиш в классе, как для KeyUp так и для KeyDown пример кода пожалуйста если не трудно, в шарпе новичок....

Рефакторинг switch внутри switch в static классе
Добрый день. Подскажите, как корректно обойти конструкцию switch case внутри switch case в статическом классе. Наткнулся на stackoverflow...

Как сделать обработчик нажатия клавиш в приложении с Form?
Мне надо сделать webbrowser->GoBack() при нажатии какой нибудь кнопки(на клавиатуре), я пробовал через GetKeyState() но компилятор...

10
Эксперт .NET
 Аватар для Usaga
14309 / 9390 / 1355
Регистрация: 21.01.2016
Сообщений: 35,411
10.10.2016, 12:18
C#
1
2
3
4
5
                    case '+':
                    if (something) {
                        keyPlus_Click(keyPlus, null);
                    }
                    break;
0
 Аватар для Mr John Shepard
1 / 1 / 0
Регистрация: 24.10.2014
Сообщений: 35
11.10.2016, 09:49  [ТС]
Usaga, Конструкция
C#
1
2
3
4
5
case '+': if(textBox1.Text.Length == 0)
                    {
                        keyPlus_Click(keyPlus, null);
                    }
                    break;
К сожалению не работает, в чем может быть ошибка?
0
Эксперт .NET
 Аватар для Usaga
14309 / 9390 / 1355
Регистрация: 21.01.2016
Сообщений: 35,411
11.10.2016, 09:57
Mr John Shepard, что значит не работает? Не компилируется? Или происходит ничего?
0
 Аватар для Mr John Shepard
1 / 1 / 0
Регистрация: 24.10.2014
Сообщений: 35
11.10.2016, 10:07  [ТС]
Usaga, Не работает код, а при нажатии + происходит вылет приложения, я же защиту от нажатия пишу. Мне надо что бы я не мог нажимать +! Кнопки на форме я уже защитил, а вот кнопки клавиатуры нет.
0
Эксперт .NET
 Аватар для Usaga
14309 / 9390 / 1355
Регистрация: 21.01.2016
Сообщений: 35,411
11.10.2016, 10:11
Mr John Shepard, ну, значит в коде обработки нажатия клавиш тоже нужно поставить проверку...
0
 Аватар для Mr John Shepard
1 / 1 / 0
Регистрация: 24.10.2014
Сообщений: 35
11.10.2016, 10:26  [ТС]
Usaga, Так туда и вставляю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //получаем символ нажатой клавиши
            char sybol = e.KeyChar;
            
            //проверяем какая кнопка была нажата
            switch (sybol)
            {
                
                case '+': if(textBox1.Text.Length == 0)
                    {
                        keyPlus_Click(keyPlus, null);
                    }
                    break;
 
            }
        }
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,101
11.10.2016, 10:35
C#
1
case '+': if(textBox1.Text.Length > 0)
0
Эксперт .NET
 Аватар для Usaga
14309 / 9390 / 1355
Регистрация: 21.01.2016
Сообщений: 35,411
11.10.2016, 10:37
Лучший ответ Сообщение было отмечено Mr John Shepard как решение

Решение

Mr John Shepard, тебе нужно, чтобы метод keyPlus_Click вызывался, когда в текстовом поле textBox1 пусто? Сейчас у тебя так. Если нужно наоборот, то измени условие:

C#
1
 if(textBox1.Text.Length == 0)
на

C#
1
 if(textBox1.Text.Length != 0)
0
 Аватар для Mr John Shepard
1 / 1 / 0
Регистрация: 24.10.2014
Сообщений: 35
11.10.2016, 11:14  [ТС]
Usaga, почему первое условие не срабатывало? Если текстбокс1 == 0 то делаем keyPlus_Click(keyPlus, null);
Я правильно мыслю?
1
Эксперт .NET
 Аватар для Usaga
14309 / 9390 / 1355
Регистрация: 21.01.2016
Сообщений: 35,411
11.10.2016, 11:21
Mr John Shepard, ну да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2016, 11:21
Помогаю со студенческими работами здесь

Как оператор switch определяет условие?
#include "stdafx.h" #include <math.h> #include <locale.h> #define PI 3.14 #define atan #define k 8.732105 int main() { ...

Как установить обработчик прерывания внутри asm-вставки?
Пишу dll-ку, в ее Main, есть такой кусок кода с asm-вставкой. Эта вставка ищет ImageBase модуля этой dll. Но прога валится, на...

Динамические массивы, как отобразить в switch условие, если функция возвращает 0
Подскажите пожалуйста, если стоит условие, что при некорректно введенных данных, а именно элементов массива - вернуть NULL, как это...

Как имитировать нажатие клавиш внутри формы c#
Мне надо имитировать нажатие клавиши. Я пробовал в таймере вызывать класс SendKeys.SendWait("{TAB}"); Но если я переведу фокус на...

Задача с использованием классов (код и условие внутри, решение кажется слишком простым, возможно не понял условие)
Текст задачи Напишите программу с классом, в котором есть закрытое статическое целочисленное поле начальным нулевым значением. В классе...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru