Уроки C# - Нажатие клавиш в программе, событие на нажимаемые кнопки, KeyDown, KeyPreview - C#

Поделиться
HTML-код
  • Опубликовано: 25 авг 2024
  • Донаты и на кофе ➜ t.me/win10twea...
    Эксклюзив для спонсоров ➜ / xpuct
    Если недоступна спонсорка ➜
    Форум по C#:
    win10tweaker.r...
    Основной канал:
    / jailbreakvideo
    #СобытиеНажатие #НажатиеКнопки #KeyDown #KeyPreview #MatchCollection #СиSharp #СиШарп

Комментарии • 145

  • @Andymit
    @Andymit 5 лет назад +56

    видео без прыжка кота не видео)

  • @ivanuchka007dunduk3
    @ivanuchka007dunduk3 4 года назад +5

    Пол часа возился, думал, что не так, вроде должно работать, а оказывается забыл keypreview) Спасибо

  • @user-hu8ng6us3u
    @user-hu8ng6us3u 4 года назад +6

    Отличные уроки! Доходчиво, а самое главное просто и практично.

  • @user-gh2sj8vi2d
    @user-gh2sj8vi2d 5 лет назад +10

    Спасибо за урок! Было бы очень круто увидеть уроки на тему WinApi и Хуков. В интернете в понятном доступе напрочь отсутствует эта информация. Приходится качать какие то готовые решения и приспосабливать, не очень понимая как они работают. Часто нужно сделать, чтобы программа висела в трейе и считывала горячие клавиши или клики мышкой при условии нажатых горячих клавиш. И чтобы клик перехватывался в программу, а не кликал в винде. Если на примете есть какой-то хороший источник таких знаний, буду очень благодарен.

  • @goquokkahan
    @goquokkahan Год назад +1

    не понимала, что не так в коде, очень выручили этим уроком, спасибо вам большое!!!!

  • @user-jx8th9xo9w
    @user-jx8th9xo9w 4 года назад +2

    Спасибо большое, долго разбиралась, но хватило минуты с твоего видео!

  • @IP_SSI17
    @IP_SSI17 4 года назад +3

    Спасибо огромное, подписка и лайк. Всё грамотно, понятно и качественно!

  • @redtayron6390
    @redtayron6390 5 лет назад +7

    Кот чувствует когда Хачатур начинает записывать видео)

  • @user55132
    @user55132 2 года назад +2

    Уважаю, помог, просто и ясно! Спасибо!!!!!

  • @unde3863
    @unde3863 5 лет назад +13

    В следующий раз, кот будет не прыгать а залезать медленно)))

    • @unde3863
      @unde3863 5 лет назад

      www.upload.ee/files/9900270/test.cmd.html
      Не понимаю вроде написал всё правильно...

  • @user-zf7le3yd3d
    @user-zf7le3yd3d 4 года назад +14

    Зачетный котяра, походу полез на шкаф - кодить!

  • @user-AristotelLeonov
    @user-AristotelLeonov 2 года назад +1

    Мужик, спасибо тебе!!! Оно работает!!!

  • @user-vf8fg6xl3g
    @user-vf8fg6xl3g 3 года назад +1

    Спасибо! Теперь я наконец то могу сделать кликер-пианино...

  • @Kukusik007
    @Kukusik007 Год назад

    Коротко и ясно, спасибо! Мне нужна была также однократная реакция на нажатие кнопки. Это нашел сам по запросу «Событие на однократное нажатие клавиши», там с флагом, тоже несложно.

  • @mw-px9ts
    @mw-px9ts 4 года назад +1

    Целый день бился над задачей. Вроде все правильно, но не работает. И вот буквально на первой минуте просмотра узнаю, что проблема в KeyPreview. ))))) Все сразу заработало. Спасибо!

  • @wizardsmoke6699
    @wizardsmoke6699 4 года назад +2

    Спасибо, очень помог)

  • @lidni
    @lidni 2 года назад +1

    Спасибо! Очень помог

  • @denharius5117
    @denharius5117 4 года назад +5

    Сделай видос как делать графические оболочки к программам,
    и вообще про компилирование exe-для чайников

  • @user-xg6cu3mn5p
    @user-xg6cu3mn5p 3 года назад +1

    Спасибо огромное!!!!!!!

  • @marchel7777777
    @marchel7777777 Год назад +1

    Хороший Котик🤣

  • @RebellonRM
    @RebellonRM 2 года назад +1

    Именно поэтому я постелил на кресло старый плед.

  • @chatdrom5643
    @chatdrom5643 5 лет назад +5

    То самое чувство, когда не интересно программирование, а его дублер. Но вы сами знаете кто!

  • @chezbargo
    @chezbargo Год назад +1

    У меня не работало все только из-за KeyPreview.... Спасибо большое за помощь!!!

  • @86werth
    @86werth 4 года назад +1

    Спасибо

  • @vladgu5037
    @vladgu5037 2 года назад +1

    бро ты крутой, за котика лайк (:

  • @rapiraOYP
    @rapiraOYP 3 года назад +1

    Помог, спасибо

  • @TWITexe
    @TWITexe 3 года назад +2

    Киньте ссылку видео с пробитием по IP

  • @user-nr4jf9rt4h
    @user-nr4jf9rt4h 5 лет назад +2

    В данном примере я бы так сделал.
    AcceptButton = button1;

  • @protokol_223
    @protokol_223 2 года назад +1

    спасибо огромное! кресло жалко(

  • @rKvinty
    @rKvinty 3 года назад +1

    Спасибо, теперь на 1 проблему меньше

  • @user55132
    @user55132 2 года назад +1

    Подпишусь

  • @awfsdgsgeefdgwef
    @awfsdgsgeefdgwef 5 лет назад +3

    Можешь сделать про DragAndDrop? Там что-то сложное :)

  • @mus_catta
    @mus_catta 4 месяца назад

    Здравствуйте! Подскажите пожалуйста, как решить задачу. Необходимо посчитать все нажатия по области формы, которая содержит tabControl, radioButton,button,comxoBox и т.д. Проблема в том, что внутри tabControla счетчик не работает, хоть он и располагается на форме. Вручную цеплять к каждому элементу бы тоже не хотелось,т.к. их очень много. Подскажите, как быть?

  • @user-si6ww3gi2l
    @user-si6ww3gi2l 4 года назад +3

    нашёл как обработать сочетание клавиш
    КОД
    void Form_KeyDown(object o, KeyEventArgs e)
    {
    // Ctrl + X
    if (e.Control && e.KeyCode == Keys.X)
    {
    // Выполнить нужное действие, например, открыть форму
    }
    }

  • @pas9857
    @pas9857 Год назад

    Как отлавливать нажатия клавиш вне своей формы, например, когда форма сложена в трей?
    Я хочу отслеживать нажатие клавиш и эмулировать новые нажатия через приложение. Примерно так работает пунто свитчер.
    Как работать при форме в фокусе - понятно. А что делать, если форма не в фокусе?

  • @user-nc1ry5ss3z
    @user-nc1ry5ss3z 3 года назад +1

    Сделай пж ролик где ты рассказываешь "какой код надо написать чтобы спрайт (объект) реагировал на нажатие"

  • @zirexplay
    @zirexplay 3 года назад +2

    Спасибо за урок, но у меня вопрос как сделать задержку между следующим нажатием клавиши G? Так как я хочу чтобы люди в моей программе не злоупотребляли событиями привязаными к данной клавише.

    • @XpucT
      @XpucT  3 года назад +1

      Я это решил накручиваением переменной. Как нажал press++ и следом проверка, если press = 30, то... Это примерно 2 секунды.

    • @zirexplay
      @zirexplay 3 года назад +1

      @@XpucT спасибо :)

  • @imafamiliya9336
    @imafamiliya9336 3 года назад +1

    Хорошо бы урок не по обработке или вызове нажатия, а по имитации нажатия клавиш.
    Т. е. вызвать внешнюю программу (например notepad.exe)
    и в ней ввести текст с пробелами не пользуясь клавишами (c секундными паузами).
    Спасибо.

    • @XpucT
      @XpucT  3 года назад +1

      [DllImport("user32.dll", EntryPoint = "FindWindowEx")] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
      [DllImport("User32.dll")] public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
      public void Notepad(string line)
      {
      var notepad = Process.Start("notepad.exe");
      notepad.WaitForInputIdle();
      SendMessage(FindWindowEx(notepad.MainWindowHandle, new IntPtr(0), "Edit", null), 0x000C, 0, line);
      }
      // Готовченко 👏

  • @SnowflakeCat1225
    @SnowflakeCat1225 Год назад +1

    Доброго времени суток!
    Урок полезный, недавно мне помог. Однако у меня возникла необходимость сделать так, чтобы форма считывала нажатия, когда находится в свёрнутом состоянии, либо в неактивном состоянии. Такое вообще возможно сделать?

    • @XpucT
      @XpucT  Год назад

      Легко через WinAPI. На канале есть про это видео.
      ruclips.net/p/PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb

  • @1718haqqx
    @1718haqqx Год назад +1

    А как добавить,чтобы зажимать несколько клавиш и происходило действие?

    • @XpucT
      @XpucT  Год назад

      Условие & условие

  • @user-ht7hf8yn1b
    @user-ht7hf8yn1b 3 года назад +2

    А как проверить нажатие клавиши 1 или 3 например?

    • @XpucT
      @XpucT  3 года назад +2

      if (e.KeyValue == (char)Keys.D1)
      if (e.KeyValue == (char)Keys.D3)

  • @user-ty6fq9os9k
    @user-ty6fq9os9k Месяц назад

    А не лучше событие нажатие клавиши Кейдавн вызывать в текстовом поле, а не самой формы?

  • @RusGameDraft
    @RusGameDraft 2 года назад +1

    Доброго времени суток, есть вопрос, если к примеру у меня есть переменная целочисленная которая передается в метод, в котором она сравнивается с другим целочисленным числом (например если она больше 10) и затем, необходимо сделать так, чтобы создалось нажатие клавиши какой-то определенной(то есть все равно что зажать клавишу на клавиатуре), а затем если значение этой переменной становится меньше 10, то и зажатие клавиши соответственно тоже должно прекратиться, как можно такое реализовать? хотя бы что почитать или какие методы для этого можно использовать.

    • @XpucT
      @XpucT  2 года назад

      Добрый день 🖐
      По сути в Вашем вопросе уже заключён ответ, так как всё держится как раз на условиях if.
      Проверяете одно и другое. Если будет сложность, пишите на форуме в этом разделе:
      win10tweaker.ru/forum/forum/с
      Мы поможем 👍

  • @imafamiliya9336
    @imafamiliya9336 3 года назад

    Как сделать, чтобы по нажатию на кнопку одновременно с Ctrl и одновременно с Shift выполнялись разные действия.
    Спасибо.

  • @golkin
    @golkin Год назад

    А как сделать нажатие на точку?

  • @maxbars1996
    @maxbars1996 4 года назад

    по клавише Delete почему-то работает только если выключен NumLock.

  • @PravdaGe
    @PravdaGe 4 года назад

    Доброго времени суток!
    Подскажи пожалуйста как реализовать перемещение Курсора в заданную координатору X Y и совершить клик ?
    не найду нормальный пример
    код просмотра конкордат у меня уже есть :
    private void label1_MouseMove(object sender, MouseEventArgs e)
    {
    int CursorX = Cursor.Position.X;
    int CursorY = Cursor.Position.Y;
    this.Text = CursorX.ToString() + " " + CursorY.ToString();
    label1.Text = CursorX.ToString() + " " + CursorY.ToString();
    }

  • @pvprew8794
    @pvprew8794 2 года назад

    Ребята, помогите что делать, у меня какая-то фигня случилась с клавиатурой, если я нажимаю crtl то у мені ищезает звук и спамиться XX, если нажимаю пуск то компьютер просто выключается, если нажимаешь на alt то компьютер уходит в спящий режим, если нажимаю на кнопку удаление текста, то ничего не удаляеться и спамиться 00000x00xx, и еще несколько кнопок делают что-то не то. Как это исправить помогите, пожалуйста

  • @PravdaGe
    @PravdaGe 4 года назад +1

    Доброго времени суток по поводу нажатия клавиш есть вопрос о SendKeys
    Мне нужна имитация нажатых клавиш при запуске программы:
    комбинация клавиш
    CTRL+SHIFT+P
    далее ждем и
    комбинация клавиш CTRL+E
    вот код:
    SendKeys.Send("^+P");
    System.Threading.Thread.Sleep(3000);
    SendKeys.Send("^E");
    Нажатие есть но не работает покажите пожалуйста как правильно

    • @XpucT
      @XpucT  4 года назад

      Добрый вечер.
      Команда работает. Другой вопрос, кто должен "услышать" эту команду.
      Чтобы проверить работоспособность SendKeys сделайте следующее:
      1. Создайте ярлык на рабочем столе на запуск любой программы
      2. Добавьте в свойства ярлыка Быстрый вызов: Ctrl + Shift + W
      3. Поверьте событие SendKeys.Send("^+{W}"); на кнопку или загрузку приложения.
      Работать не будет.
      Однако, если Вы запустите Notepad++, который принимает такие горячие клавиши, то ему сможете послать эту команду и он "услышит" её.
      Не нужно забывать, что клавиши, которые нажимает пользователь и имитация - это разные вещи.
      Функция создавалась не для того, чтобы любой смог любому сломать винду, поэтому на событии висит безопасность.
      Вам стоит подойти к решению задачи по-иному.

    • @PravdaGe
      @PravdaGe 4 года назад

      @@XpucT Добрый вечер. не кто не кто собирается сломать винду с этим прекрасно справляются Майкрософт Разработчики !!! ))
      Такой вопрос вот например мы делаем кнопку SendKeys.Send("^+{W}"); но запустив форму у нас же может быть и Включи на Русская раскладка Клавиатуры
      может вы знаете как слетать проверку раскладки при запуске форму и если Установлено РУС Меняем на ENG
      Спасибо !

  • @7453060
    @7453060 3 года назад +1

    Думаю, людей надо сразу на mvvm тренить иначе потом у них суп в голове. К тому-же на wpf это как-то нагляднее.

    • @XpucT
      @XpucT  3 года назад +3

      Увы, на MVVM новичок точно с ума сойдёт, ибо нужно правильно объяснить концепцию.
      Я вот всё сам подрываюсь начать учить, но никак. Не в том смысле, что не понимаю =)) Я-то как раз всю прелесть уже понимаю, но вот правильно и последовательно это на нормальных примерах, как с формами... Боюсь сделать ошибку, которую допускают абсолютно все. Поэтому пока не берусь ни за сценарий, ни за запись. Хочу всё продумать, чтобы точно никого не спугнуть, а реально научить, как в этом курсе.

  • @dobrynanikitich7034
    @dobrynanikitich7034 4 года назад

    А как из халло ворд передать управление на кнопку на клаве? Чтобы ждала нажатие.
    А по нажатию программа пошла дальше.
    Как управлять с кнопки я разобрался, а вот как на неё передать управление пока не знаю.
    Правда, мне для С++, точнее блупринт бы для анриала. Но готовых примеров не нашёл.
    Теперь ищу по С++.

  • @Silver_men_rev
    @Silver_men_rev Год назад +1

    Всем привет, ребятки перелопатил весь инет но решение так и не нашел, подскажите кто может, как реализовать закрытие формы в проекте winforms? проблема следующая когда я выставляю KeyPreview = true, на форме и использую KeyDown(), то пока форма не запущена работает все нормально все закрывается, но как только я ее запустил через кнопку btFind_Click(), с определенным кодом и с Hide(); в этой же кнопке, что бы спрятать окно, то в таком случае KeyDown() не работает. Как сделать так что бы когда выполняется какой то код в этой форме ее можно было бы остановить и показать через сочетание клавиш Control+ Shifh+ Z? Всем откликнувшимся за ранее спасибо.

    • @XpucT
      @XpucT  Год назад

      Привет 🖐
      Если форма невидима, то просто так не будет работать и Я думаю, что это должно быть понятно Вам и логично.
      Однако, подобный кейс решается с WinAPI. На канале в плейлисте есть это видео.
      ruclips.net/p/PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb

    • @Silver_men_rev
      @Silver_men_rev Год назад +1

      ​@@XpucT Спасибо за ответ, но я только начинаю по чуть что то делать в своих проектиках, трудно конечно разобраться.Ваши видео посмотрел про API и ни чего не понял))). В ютубе и на просторах интернета ни чего подобного не нашел, или там подобного на виндов формс ни чего такого нету или я не понимаю что мне надо))). Все равно спасибо что ответили, наверное мне еще рановато)))

  • @jamade3687
    @jamade3687 4 года назад +2

    1:50 - а почему у меня нет клавиши F24 : )

  • @Scr1pted
    @Scr1pted 2 года назад +1

    Хачатур, как сделать так если у меня окно скрыто то клавиши работают потому что если я окно скрою то клавиши не работают

    • @XpucT
      @XpucT  2 года назад

      Потому что это событие на нажатие кнопок в самой форме. Тут не стоит путать глобальные клавиши.
      ru.stackoverflow.com/questions/784909/c-Активация-по-нажатию-клавиши-на-клавиатуре-при-свернутой-форме

    • @Scr1pted
      @Scr1pted 2 года назад

      @@XpucT А есть какой нибудь короткий скрипт чтобы было в глобальном

    • @XpucT
      @XpucT  2 года назад

      ​@@Scr1pted так это и есть короткий вариант =))
      Ты просто пойми, что одно дело управление формой, другое - управление глобально Windows.

    • @Scr1pted
      @Scr1pted 2 года назад

      @@XpucT Постараюсь, я просто новичок и мало что понял можешь сделать тутор пж

  • @kabukijoe99
    @kabukijoe99 4 года назад +1

    Привет, помогите пожалуйста с пониманием кода. Есть вставленная программным способом радиокнопка, и я записал в нее текст. но никак не могу разделить его на 2 строки (radioButton5.Text= "radioButton5"+"
    "+"это я" или radioButton5.Text= "radioButton5"+Environment.NewLine+"это я" - не работает). (скрин) prnt.sc/rkz7ki СПАСИБО

    • @XpucT
      @XpucT  4 года назад

      Привет 🖐
      radioButton5.Text = "Первая строка
      Вторая строка";

    • @kabukijoe99
      @kabukijoe99 4 года назад

      prnt.sc/rle5gw немного не сработало

    • @XpucT
      @XpucT  4 года назад +1

      @@kabukijoe99то ли студия старая, то ли C#. то ли .NET Framework.
      Я специально проверил. Мой вариант работает 100%.

    • @kabukijoe99
      @kabukijoe99 4 года назад +1

      ​@@XpucT radiobutton6.AutoSize=true - это помогло. Все равно спасибо

  • @user-lt6vj1xh4m
    @user-lt6vj1xh4m 5 лет назад

    Здравствуйте, делаю программу в помощь учителю. Необходимо, что бы при запуске программы отключалась клавиатура, ну или хотя бы горячие клавиши, вроде: Alt + Tab, Ctrl + Win + {стрелка}, Ctrl + Alt + Delete и т.д. В интернете нашел только через WinAPI, но хотелось бы что-нибудь попроще.

  • @glorglorsky7987
    @glorglorsky7987 4 года назад +1

    привет, а если много кнопок button, то как к каждому button привязать обработку нажатия на enter?

    • @XpucT
      @XpucT  4 года назад

      Привет 🖐
      Если речь о кнопке по умолчанию по Enter, то она может быть только одна.
      Типа действие по умолчанию.

    • @glorglorsky7987
      @glorglorsky7987 4 года назад

      ​@@XpucT спасибо. Тогда вопрос, есть много textbox, и один label, как по нажатию enter выводить данные в label из каждого textbox.
      т.е курсор в первом textBox, набрал 123, нажал enter, данные попали в label,
      курсор во втором textBox, набрал sdfsdf, нажал enter, данные попали в label,
      Надо узнать тогда, в каком TextBox стоит курсор.
      т.е Я сначала подписываюсь на все textBox
      textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(Enter_Click);
      textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(Enter_Click);
      textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(Enter_Click);
      обработчик для всех textBox
      private void Enter_Click(object sender, KeyEventArgs e)
      {
      //if (e.KeyValue == (char)Keys.Enter)
      //{
      // label1.Text = textBox2.Text;
      //}
      foreach (TextBox tb in Controls.OfType())
      {
      tb.KeyDown += (s, new_e) => { label1.Text = tb.Text; };
      }
      }
      но не получается)

    • @XpucT
      @XpucT  4 года назад

      @@glorglorsky7987 в загрузке формы можно добавить:
      AcceptButton = button1;
      Либо просто в свойствах формы заранее установить AcceptButton на button1.
      i.imgur.com/OxLpOGf.png

    • @glorglorsky7987
      @glorglorsky7987 4 года назад

      textBox1.KeyDown += (s, e) => { if (e.KeyValue == (char)Keys.Enter) label1.Text = textBox1.Text; };
      textBox2.KeyDown += (s, e) => { if (e.KeyValue == (char)Keys.Enter) label1.Text = textBox2.Text; };
      textBox3.KeyDown += (s, e) => { if (e.KeyValue == (char)Keys.Enter) label1.Text = textBox3.Text; };
      получилось, а еще есть способы, как я пытался выше?)

    • @XpucT
      @XpucT  4 года назад

      @@glorglorsky7987 Я же написал вариант:
      AcceptButton = button1;
      В данном случае свой велосипед придумывать не стоит, если есть свойство AcceptButton.

  • @86werth
    @86werth 4 года назад +1

    Скажите пожалуйста, у меня есть код который сохраняет информацию как Сохранить как. А как сделать чтобы сохранял таким образом, чтобы пользователь один раз выбрал путь куда ему нужно сохранить, а затем сохранял без диалогового окна.
    private void SaveDocument()
    {
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Текстовые документы|*.txt";
    sfd.FileName = "Безымянный";
    sfd.InitialDirectory = "C:\\";
    if(sfd.ShowDialog() == DialogResult.OK)
    File.WriteAllText(sfd.FileName,richTextBox1.Text);
    }

    • @XpucT
      @XpucT  4 года назад

      Держи:
      string customPath = Path.GetPathRoot(Environment.SystemDirectory);
      private void SaveDocument()
      {
      if (!File.Exists(customPath))
      {
      SaveFileDialog sfd = new SaveFileDialog();
      sfd.Filter = "Текстовые документы|*.txt";
      sfd.FileName = "Безымянный";
      sfd.InitialDirectory = customPath;
      if (sfd.ShowDialog() == DialogResult.OK)
      File.WriteAllText(sfd.FileName, richTextBox1.Text);
      customPath = sfd.FileName;
      }
      else
      File.WriteAllText(customPath, richTextBox1.Text);
      }

    • @86werth
      @86werth 4 года назад +1

      Спасибо большое

  • @nil3x567
    @nil3x567 4 года назад

    нужна помосчь как зделать чтоб прога захватывала нажатие допустим из игры или другои програмы

  • @milkyway365
    @milkyway365 5 лет назад

    Хачатур, можно ли через
    if (e.KeyValue == (char)Keys.D0)
    {
    button_0.PerformClick();
    }
    сделать комбинацию клавиш?
    То есть нужно, чтобы при нажатии shift + (кнопка, где плюс и равно на одной кнопки) выводился "+" вызвался метод вывода плюса.
    Пробовал так:
    void Form1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyValue == (char)Keys.Oemplus)
    {
    button_plus.PerformClick();
    }
    }
    Но тогда с шифтом не взаимодействует, и не получится метод клавиши "=" вызвать.
    Как можно реализовать комбинацию "shift" + "=" = "+"?

    • @XpucT
      @XpucT  5 лет назад +1

      if (e.Shift && e.KeyData == Keys.Oemplus)
      {
      // Должно работать, но не работает.
      }
      Отдельно пашет
      Другие комбинации пашут
      Конкретно Shift + = не хочет

    • @XpucT
      @XpucT  5 лет назад

      Нашёл альтернативное решение. Но не проверял:
      stackoverflow.com/questions/37881046/how-to-detect-if-multiple-keys-are-pressed-in-c-sharp-forms/37884277#37884277

    • @milkyway365
      @milkyway365 5 лет назад

      @@XpucT никак не могу разобраться. Ситуация такова: есть интерфейс с контролами, и надо, чтобы комбинация клавиш вызывала конкретный контрол.
      К примеру:
      if (e.Shift && e.KeyData == Keys.D8)
      //D8 - ведь 8 на клавиатуре?
      {
      button_umn.PerformClick();
      }
      Вот надо, чтобы при нажатии шифта + 8 вызвался метод умножить, а вернее нажался контрол умножить, а от него уже метод
      Ничего не выходит, он даже не улавливает нажатие шифта (в дебаге смотрел).
      Проблема также в том, что на клавишу 8 назначено также событие:
      switch (e.KeyValue)
      {
      case (char)Keys.D8:
      button_8.PerformClick();
      break;
      }
      Вобщем, каша.
      P.S. С помощью твоего примера никаких комбинаций так и не смог построить, можешь скинуть коды, как ты проверял?

    • @alexeygudan
      @alexeygudan 4 года назад

      Немного поздно(так, совсем чуть-чуть), но я столкнулся с этой же проблемой и вот мое решение:
      if (e.Shift)
      KeyDown += (s, a) =>
      {
      if (a.KeyValue == (int)Keys.D8)
      buttonMultiply.PerformClick();
      };
      Не знаю, на сколько это нормально, но мой мозг на большее не додумался)
      UPD: Додумался ещё лучше сделать
      Что бы не проверять нажатия шифта, нужно проверять является ли нажатая клавиша нужным символом. В данном случае
      if (e.KeyChar.ToString() == "*")
      buttonMultiply.PerformClick();
      Замечу, что события должно быть KeyPress, при KeyDown/KeyUp нет KeyChar(или есть и я просто не нашел)

  • @user-mn4wl9bb5x
    @user-mn4wl9bb5x Год назад

    Подскажите как кнопку выхода писать exit()?

    • @Kukusik007
      @Kukusik007 Год назад

      В смысле, this.close()?

  • @alexpain4841
    @alexpain4841 3 года назад

    Не хотел спрашивать, хотел найти. Но, пишу хоткеи для калькулятора, и как у Вас и как у всех пробую, у меня клавиши работают только когда в фокусе, если 1 в фокусе, работает только NumPad1 все остольные не работают, соответственно когда 2 в фокусе, пишет только 2-ку в строке... что делать, когда есть куча кнопок и они не работают без фокуса?

    • @XpucT
      @XpucT  3 года назад

      Во-первых: обязательно нужно выставить KeyPreview, как показано в видео в свойствах формы.
      Создать событие формы, в котором, например....
      void Form1_KeyDown(object sender, KeyEventArgs e)
      {
      // Разделить
      if (e.KeyValue == (char)Keys.Divide)
      {
      }
      }

  • @IntegralF
    @IntegralF 3 года назад

    как сделать то же только на с++?

  • @vendorgames
    @vendorgames 5 лет назад +1

    Здравствуйте, может кто из комментаторов поможет. Есть число допустим - 100.000 мне надо разбить его на энное количество частей с условием что это части будут рандомными числами с диапазоном от 2500 до 3500 (но чтоб в итоге при их сложении получилось 100.000)
    Пример
    Число 9000
    Диапазон числ от 2500 до 3500
    Результат: 2768 3421 2811
    Может кто встречал уже где-то готовый вариант такого калькулятора? или кто-то захочет написать такой калькулятор! Заранее спасибо

    • @XpucT
      @XpucT  5 лет назад +5

      Random random = new Random();
      int dice1 = random.Next(2500, 3500);
      int dice2 = random.Next(2500, 3500);
      int dice3 = 9000 - (dice1 + dice2);
      // Профит 👍

    • @Slonick
      @Slonick 5 лет назад

      private IEnumerable Split(int input, int min, int max)
      {
      var random = new Random();
      var result = new List();
      do
      {
      var elapsed = input;
      result.Clear();

      do
      {
      var next = random.Next(min, max);
      if (next > elapsed) next = elapsed;
      elapsed -= next;
      result.Add(next);
      } while (elapsed > 0);
      } while (result.Any(x => x < min || x > max));
      return result;
      }

  • @ianm8107
    @ianm8107 4 года назад

    привет Хачатур, я не знаю обновление это или нет, но теперь в VS у меня много чего выделяется синим, красным, даже черным. что думаешь об этом? я бы лично убрал это все и поставил как было раньше, но не знаю как...

    • @XpucT
      @XpucT  4 года назад +1

      Привет 🖐
      А для чего первый урок? Нужно делать точку сохранения на виртуалке и в таких случаях откатываться.

    • @ianm8107
      @ianm8107 4 года назад +1

      @@XpucT da, как только я запустил форму все встало на свои места)не знаю что это было

    • @XpucT
      @XpucT  4 года назад +1

      @@ianm8107 магия наречия Хачатура =)

  • @YNISHAso2
    @YNISHAso2 3 года назад

    А код можена?

  • @user-yx2wx7we5n
    @user-yx2wx7we5n 5 лет назад

    ​ XpucT привет знакомый идею подкинул интересную : есть мультимедийные клавиши на клаве плей стоп наз вперед и когда сидишь в вк или еще где то фильмец слушаешь эти клавиши работают нооо когда сидишь в другой программе или кодишь или играешь хочешь переключить трек или вернуть его то эти кнопки не пашут. Суть как сделать софтину чтобы перехватывала эти кнопки и отправляла в тот же хром команды клавишь. как такое можли реализовать?

    • @XpucT
      @XpucT  5 лет назад

      Я давно перестал писать подобного рода фокусы. Взял X-738-K. Все настройки прошиваются в мышь.
      А вообще можно, конечно, такое сделать.

  • @daniil-shamraev
    @daniil-shamraev 5 лет назад

    Здравствуйте, обнаружил такую вещь, что моя программа закрывается при нажатии на любую кнопку, вне зависимости от обработчик событий, как это исправить?

    • @XpucT
      @XpucT  5 лет назад

      Где-то Close() осатвили?

    • @daniil-shamraev
      @daniil-shamraev 5 лет назад

      @@XpucTнет

    • @XpucT
      @XpucT  5 лет назад

      @@daniil-shamraev что показывает Debug?

  • @TWITexe
    @TWITexe 4 года назад

    Подскажите, не хочет реагировать ни в какую, прописал всё, как в вашем видео.
    Вот скрины: imgur.com/a/27Vg0tV

  • @Hello_world_2020A
    @Hello_world_2020A 4 года назад

    КАК сделать события при клике на среднию кнопку мышки (там где скрол)???????

    • @XpucT
      @XpucT  4 года назад +1

      Добавляешь событие MouseDown на нужном контроле и добавляешь в него это:
      if (e.Button == MouseButtons.Middle)
      {
      // Выполнится, если нажатие было колесом
      }

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад

      @@XpucT щас буду пробовать

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад +1

      @@XpucT ТАК должно быть
      namespace WindowsFormsApp15
      {
      public partial class Form1 : Form
      {
      public Form1()
      {
      InitializeComponent();
      }
      private void button1_MouseDown(object sender, MouseEventArgs e)
      {
      if (e.Button == MouseButtons.Middle)
      {
      // Выполнится, если нажатие было колесом
      }
      }
      }
      }

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад +1

      @@XpucT УРА сработало СПАСИБО ТЕБЕ
      4 часа искал
      Я просто делаю аналог программы Circle dock если интересно
      Проект был заброшен в 2008 году
      СПАСИБО // очень помог

    • @Hello_world_2020A
      @Hello_world_2020A 4 года назад

      @@XpucT А как сделать тоже самое но только на wpf

  • @areon7777
    @areon7777 4 года назад

    Помогите пожалуйста, как сделать так, чтобы кнопки работали без фокуса на программу
    чтобы я в любом месте, даже открывая другую программу, нажимал на кнопку(клавишу клавиатуры) и тогда она работала

    • @jamade3687
      @jamade3687 4 года назад

      никак 1:70

    • @areon7777
      @areon7777 4 года назад

      @@jamade3687 В смысле никак, а как тогда другие программы работают?

    • @jamade3687
      @jamade3687 4 года назад

      ​@@areon7777​ладно вот:
      private void Form1_Load(object sender, EventArgs e)
      {
      gkh.HookedKeys.Add(Keys.PrintScreen);
      gkh.KeyUp += new KeyEventHandler(gkh_KeyUp);
      }
      private void Form1_FormClosing(object sender, FormClosingEventArgs e)
      {
      gkh.unhook();
      }
      static void gkh_KeyUp(object sender, KeyEventArgs e)
      {
      // Делаем то, что необходимо
      }
      gkh это объект класса globalKeyboardHook:
      static globalKeyboardHook gkh = new globalKeyboardHook();
      надо уточнить, что клавиша- левая
      итог:
      gkh.HookedKeys.Add(Keys.L*****Key);
      где ***** - там клавиша
      фух кажется всё

    • @areon7777
      @areon7777 4 года назад

      @@jamade3687 Ого, спасибо

    • @areon7777
      @areon7777 4 года назад

      @@jamade3687 А как мне его написать, у меня программа написана на VB

  • @deadsoul94
    @deadsoul94 3 года назад

    А как сделать, чтобы Key отправлялась в неактивное окно.

    • @XpucT
      @XpucT  3 года назад

      В неактивное - это какое? Чужое? Тут уже injecting нужно знать. Но урок не об этом.

    • @deadsoul94
      @deadsoul94 3 года назад

      @@XpucT К примеру активна игра, и по нажатию на "0" нужно стартануть таймер . А то на данный момент приходится переключаться между окнами.

    • @XpucT
      @XpucT  3 года назад

      @@deadsoul94 находил WinAPI, правда урока пока такого не снимал. Возможно, в будущем сниму.

  • @jekyll3
    @jekyll3 6 месяцев назад

    Кто нибудь предоставьте мне выполненные задания плииззз )
    заранее буду благодарен

  • @user-ue4qe9hy9e
    @user-ue4qe9hy9e 4 года назад

    А как сделать так, чтобы происходило событие когда форма свернута ?

    • @XpucT
      @XpucT  4 года назад

      Тут уже не нажатие на форме, а перехват клавиатуры. Делается совсем иначе. Постараюсь рассказать в следующих видео.
      Но, как правило, обычно просто делают ShowInTaskbar = false; Opacity = 0;

  • @KILLZONERUSSIA
    @KILLZONERUSSIA Год назад

    не работает

    • @XpucT
      @XpucT  Год назад

      Работает

    • @KILLZONERUSSIA
      @KILLZONERUSSIA Год назад

      @@XpucT ладно, работает

  • @wc3d2
    @wc3d2 5 лет назад +1

    1

  • @_xome4ok_348
    @_xome4ok_348 4 года назад +1

    зачем в уроке по программированию твое лицо и половина комнаты? отвлекаешь и в принципе это не нужно! или хотя бы сделай как можно меньше камеру, а не на пол экрана