C # Проверка, была ли нажата кнопка
Я делаю программу, которая должна быть продолжена, если даны 2 условия. Первый 2 TextBoxes имеет одно и то же слово и нажата кнопка, которая открывает новую форму. Вы видите, что я пытаюсь создать регистрационную форму;) Теперь у меня есть событие для «полной» кнопки.
Моя проблема в том, что я не могу найти метод, который дает что-то вроде button1.Click или что-то похожее.
Я надеюсь, что кто-то может мне помочь здесь.
4 ответа
Click — это событие, которое срабатывает сразу после отпускания кнопки мыши. Поэтому, если вы хотите проверить обработчик для button2.Click , если раньше был нажат button1 , все, что вы могли сделать, это иметь обработчик для button1.Click , который устанавливает флаг bool вашего собственного значения в true.
Я очень новичок в этом сайте. Я студент бакалавриата, занимаюсь бакалавром компьютерных приложений. Я делаю простую программу в Visual Studio с помощью С#, и я столкнулся с той же проблемой, как проверить, нажата ли кнопка? Я хотел сделать это,
Я не знал, что делать, поэтому я попытался найти решение в Интернете. У меня много решений, которые мне не помогли. Итак, я попробовал что-то самостоятельно и сделал это,
Я объявил переменную «i» и присвоил ей разные значения в разных кнопках и проверил значение я в функции if. Это сработало. Дайте свои предложения, если они есть. Спасибо.
Как проверить нажата ли кнопка c
К событиям клавиатуры можно отнести следующие события:
Возникает при нажатии клавиши
Возникает при нажатии клавиши
Возникает при освобождении клавиши
Возникает при освобождении клавиши
Возникает при получении элементом текстового ввода (генерируется не только клавиатурой, но и стилусом)
Возникает при получении элементом текстового ввода
Большинство событий клавиатуры (KeyUp/PreviewKeyUp, KeyDown/PreviewKeyDown) принимает в качестве аргумента объект KeyEventArgs, у которого можно отметить следующие свойства:
Key позволяет получить нажатую или отпущенную клавишу
SystemKey позволяет узнать, нажата ли системная клавиша, например, Alt
KeyboardDevice получает объект KeyboardDevice, представляющее устройство клавиатуры
IsRepeat указывает, что клавиша удерживается в нажатом положении
IsUp и IsDown указывает, была ли клавиша нажата или отпущена
IsToggled указывает, была ли клавиша включена — относится только к включаемым клавишам Caps Lock, Scroll Lock, Num Lock
Например, обработаем событие KeyDown для текстового поля и выведем данные о нажатой клавише в текстовый блок:
А в файле кода пропишем обработчик TextBox_KeyDown :
Здесь в текстовый блок добавляется текстовое представление нажатой клавиши в текстовом поле:
Правда, в данном случае реальную пользу от текстового представления мы можем получить только для алфавитно-цифровых клавиш, в то время как при нажатии специальных клавиш или кавычек будут добавляться их полные текстовые представления, например, для кавычек — OemQuotes.
Если нам надо отловить нажатие какой-то опредленной клавиши, то мы можем ее проверить через перечисление Key :
Объект KeyboardDevice позволяет нам получить ряд дополнительных данных о собыиях клавиатуры через ряд свойств и методов:
Modifiers позволяет узнать, какая клавиша была нажата вместе с основной (Ctrl, Shift, Alt)
IsKeyDown() определяет, была ли нажата определенная клавиша во время события
IsKeyUp() позволяет узнать, была ли отжата определенная клавиша во время события
IsKeyToggled() позволяет узнать, была ли во время события включена клавиша Caps Lock, Scroll Lock или Num Lock
GetKeyStates() возвращает одно из значений перечисления KeyStates, которое указывает на состояние клавиши
Пример использования KeyEventArgs при одновременном нажатии двух клавиш Shift и F1:
События TextInput/PreviewTextInput в качестве параметра принимают объект TextCompositionEventArgs . Из его свойств стоит отметить, пожалуй, только свойство Text , которое получает введенный текст, именно текст, а не текстовое представление клавиши. Для этого добавим к текстовому полю обработчик:
И определим обработчик в файле кода:
Причем в данном случае я обрабатываю именно событие PreviewTextInput, а не TextInput, так как элемент TextBox подавляет событие TextInput, и вместо него генерирует событие TextChanged. Для большинства других элементов управления, например, кнопок, событие TextInput прекрасно срабатывает.
Валидация текстового ввода
События открывают нам большой простор для валидации текстового ввода. Нередко при вводе используются те или иные ограничения: нельзя вводить цифровые символы или, наоборот, можно только цифровые и т.д. Посмотрим, как мы можем провети валидацию ввода. К примеру, возьмем ввод номера телефона. Сначала зададим обработку двух событий в xaml:
И определим в файле кода обработчики:
Для валидации ввода нам надо использовать обработчики для двух событий — PreviewKeyDown и PreviewTextInput. Дело в том, что нажатия не всех клавиш PreviewTextInput обрабатывает. Например, нажатие на клавишу пробела не обрабтывается. Поэтому также применяется обработка и PreviewKeyDown.
Как проверить нажата ли кнопка?
Как проверить, нажата ли кнопка? Пробовал так, но условия не срабатывают.
![]()
Если вы хотите стилизовать кнопку при нажатии на неё, то добавьте в стиль кнопки триггер, срабатывающий при IsMouseCaptured == true или IsPressed == true . Имейте в виду, что стандартный стиль кнопки не очень хорошо поддерживает изменение фонового цвета, поэтому кнопка будет выглядеть не так красиво, как хотелось бы.
Ваша проверка в событии Click не срабатывает, потому что событие приходит после того, как вы отпустите кнопку.
![]()
OnLeftMouseDown можно отловить воспользовавшись методом AddHandler.
button.AddHandler(Button.MouseLeftButtonDownEvent, обработчик, true);
Кнопка проглатывает события мышки внутри себя, это позволяет всеравно эго отлавливать.
Может быть по тому, что событие button click (нажатие кнопки) происходит после того как она «разожмётся» и соответственно пишет, что в тот промежуток времени она не была нажата. и вообще зачем, нажимая кнопку узнавать, нажата ли она? можешь например в свойство tag чтото записывать при какам либо действии, а потом просто проверять его, и делать дальше что либо.
Проверка нажата ли клавиша Модуль stdlib.H
некоторые другие функции ввода останавливают выполнение программы.
Функция kbhit() позволяет избежать лишних остановов программы. Например, в игрушке, если не нажата клавиша продолжать движение в старом направлении.
Буфер клавиатуры может запомнить много нажатых символов, в некоторых случаях его целесообразно очистить. Это тоже можно сделать с помощью функций kbhit() и getch().
/* если в буфере клавиатуры есть нажатый

имвол, то прочитать его */

* Очистка буфера клавиатуры */
/* Какие конкретно символы читаются при очистке буфера клавиатуры нам не важно */
Программа заполнения экрана цветными символами

Инициализировать генератор случайных
координаты, цвет фона и
Вывести случайный символ
код в диапазоне [50 .. 250]
Восстановить первоначальный цвет и
Переключатель switch ()

<Перем.> — Переменная или выражение перечисляемого типа (integer, char, и т.п.)
<Зн.> — Допустимые значения
break — Прервать выполнение switch. Если его нет, выполняются следующие строки программы
Default — Если ни одно из перечисленных.[ ]- Необязательный параметр.
<Опер-ры> — Группа операторов, составной оператор в этом случае использовать необязательно
case ‘C’:printf(«\n Нажаты заглавные символы») ;
printf(«\n Нажат символ %c «,ch) ;
case 13 :printf(«\n Нажата клавиша \’Enter\'») ;
case 27 :printf(«\n Нажата клавиша \’Esc\'») ;
Движение символа по экрану

исунок экрана должен содержать рамку,
подсказку в нижней строке и начальное
Лучше использовать знач.
Не забыть old_x=x ;
что-бы потом стирать
уже в новом месте
Рекомендуется использовать переменные:
int x,y; — Текущее положение символа на экране
int old_x,old_y; — Старое положение символа на экране
Рисование символа: gotoxy(x,y);
cprintf(«*»); /* функция printf() не допускает позиционирования по экрану */
Стирание символа: gotoxy(old_x,old_y);
Функции
Довольно часто программа содержит повторяющиеся в нескольких местах группы одинаковых команд, такие фрагменты целесообразно оформить в виде функций.