Путь разработчика    

События флеш-кликов в C#

eda2480d

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

Python

Когда запускается обработчик событий, он отключает кнопку. Затем он выполняет свою работу и снова включает кнопку.

К сожалению, этот подход не работает. Windows очень успешно ставит в очередь любые ожидающие события мыши, включая клики, когда ваша программа занята, а затем доставляет их, когда обработчик событий заканчивается, чтобы вы могли получить второй клик. (Я мог бы поклясться, что этот подход использовался для работы.)

Один из способов: использовать BackgroundWorker или другую технологию потоков для выполнения работы над отдельным потоком. Отключите кнопку, а затем запустите поток. Когда нить закончится, снова включите кнопку. Этот метод работает и может иметь другие преимущества (например, позволяя пользователю взаимодействовать с другими частями программы, пока задача кнопки все еще работает), но это немного круговое движение.

Другой подход заключается в использовании функции API PeekMessage, как показано в следующем коде.

Python

Этот код содержит кучу деклараций для функции API и ее параметров. (Вам также нужно добавить с помощью операторов для пространств имен System.Runtime.InteropServices и System.Security. Загрузите пример для деталей.)

Метод FlushMouseMessages вызывает PeekMessage, чтобы он отклонил любое сообщение в диапазоне WM_MOUSELAST до PM_REMOVE. Код вызывает PeekMessage несколько раз, пока не вернет false, чтобы указать, что таких сообщений нет.

Следующий обработчик событий кнопки вызывает FlushMouseMessage, поэтому вы не можете нажать кнопку, пока код еще не запущен.

Python

Источник: http://csharphelper.com/blog/2015/08/flush-click-events-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

1С-программирование как дважды два. Самоучитель (Михайлов Сергей)

Книга "1 С-программирование как дважды два. Самоучитель" основана на личном опыте предпринимательской деятельности автора в сфере 1 С-программирования. Начин...

25 11 2020 21:38:11

Метод Substring() в Java

Подстрока является частью строки. Метод String substring() Java String возвращает новый строковый объект из данной строки. Синтаксис String str = "Java Str...

24 11 2020 6:38:47

Как сделать сохранения в Unity 5 при помощи Newtonsoft.Json

В этом уроке мы разберем как сделать сохранения в Unity 5 при помощи библиотеки Newtonsoft.Json и разберем некоторые её свойства....

23 11 2020 0:22:57

Нарисуйте цветное колесо с альфа-и насыщенными значениями в C#

Пример Нарисуйте цветное колесо цвета в C# показывает, как рисовать цветовое колесо. В этом примере вы можете использовать полосы прокрутки для изменения з...

22 11 2020 13:46:11

Пусть пользователь перетаскивает изображение с прозрачными пикселями поверх фонового изображения в C#

В этом примере показано, как вы можете позволить пользователю перетащить изображение на PictureBox. Свойству PictureBox Изображение задано фоновое изображе...

21 11 2020 22:45:41

Найти файлы, которые соответствуют нескольким шаблонам в C#

Метод System.IO.Directory.GetFiles позволяет легко искать файлы в каталоге, соответствующем шаблону. К сожалению, он может искать только файлы, соответству...

20 11 2020 9:46:58

Стандартные исключения в C#

Пример Используйте try блоки блокировки для защиты от непредвиденных ошибок в C# объясняют, как поймать исключение, и вкратце упоминает, что вы можете испо...

19 11 2020 21:52:11

Циклы while и do..while в Java

Мы используем многократные действия для решения проблем повседневной жизни. В программировании мы также используем многократные действия для решения пробле...

18 11 2020 19:15:52

Сохранение управляющих изображений WPF в C#

Иногда мне нужно сохранять управляющие изображения WPF с прозрачным фоном по той или иной причине. На этот раз мне нужно было сделать несколько значков, ко...

17 11 2020 16:17:32

Языки программирования для начинающих: с чего лучше начать?

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

16 11 2020 19:59:54

Отображение состояния батареи с помощью значка уведомлений в C#

Пример Показывать статус батареи дружелюбно в C# показывает, как нарисовать изображение батареи, чтобы показать состояние батареи. В этом примере отображае...

15 11 2020 17:37:17

Современные языки программирования: список 2018

Список современных языков программирования на 2018 год. Чтобы определиться с конкретным языком программирования для изучения (одним или несколькими) нужно для начала ответить себе на вопрос:...

14 11 2020 17:45:45

Нарисуйте кривую с несколькими цветами в C#

Достаточно легко рисовать разные линии с разными цветами, но не так просто рисовать одну строку, которая использует несколько цветов. Один из способов доби...

13 11 2020 15:13:34

Изучаем C++ через программирование игр

Если вы хотите научиться программировать первоклассные игры, вам просrо необходимо изучить язык С++. Эrа книга поможет вам освоить разработку игр с самых а...

12 11 2020 23:38:25

Отображение текста на ProgressBar в C#

Было бы неплохо, если бы вы могли отобразить сообщение о ходе работы над ProgressBar. К сожалению, вы не можете этого сделать. Вы даже не можете помещать я...

11 11 2020 14:16:49

Нарисуйте пунктирные линии с разными стилями в C#

Чтобы нарисовать пунктирные линии, создайте новый Pen и установите его свойство DashStyle, чтобы указать стиль тире, который вы хотите. Например, следующий...

10 11 2020 13:53:46

Использование элементов управления Windows Forms, чтобы сделать расширитель в C#

WPF, Silverlight, Metro или все, что Microsoft называет этим материалом, теперь дни имеют несколько полезных элементов управления в пространстве имен Syste...

09 11 2020 20:11:43

Работа с каталогами в Python

Модуль О С в python предоставляет функции для взаимодействия с операционной системой. Этот модуль содержит интерфейс для многих функций, зависящих от операц...

08 11 2020 5:20:53

Использование веб-браузера в Python

Модуль webbrowser предоставляет интерфейс высокого уровня, позволяющий пользователям просматривать веб-документы. В большинстве случаев простое вызов функц...

07 11 2020 17:25:18

Как открыть файл PDF в C#

Во время разработки я добавил в форму элемент WebBrowser. Когда программа запускается, он использует следующий код для открытия PDF-файла в элементе управл...

06 11 2020 21:35:11

Циклы For и While в Python

Циклы - одна из самых важных функций в программировании. Петли предлагают быстрый и простой способ сделать что-то многократно. Он может выполнять > блок...

05 11 2020 2:25:51

Нарисуйте линии с торцевыми крышками в C#

Свойства Pen класса StartCap и EndCap определяют, как линия рисует свои концевые колпачки. В этом примере используется следующий код для создания образцов...

04 11 2020 20:53:12

Полный справочник по C++ (Герберт Шилдт)

Четвертое издание энциклопедического труда Г. Шилдта " Полный справочник по C++", в котором всесторонне рассматривается и иллюстрируется основная терминолог...

03 11 2020 13:36:46

Разница между окном, документом и экраном в JavaScript?

Объект окна JavaScript расположен вверху иерархии объектов JavaScript и представляет окно браузера. Объект окна поддерживается всеми браузерами. Все глобал...

02 11 2020 0:47:58

Сортировка слов по количеству букв в C#

В этом примере сортируются слова по количеству букв. Он подсчитывает количество отдельных букв в списке слов и отображает слова и их подсчеты, отсортирован...

01 11 2020 7:26:51

Выбор языка программирования: 6 пунктов при выборе своего языка

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

31 10 2020 0:36:41

Отображение пользовательских цветов в диалоговом окне выбора цвета в C#

В диалоговом окне выбора цвета можно отображать пользовательские цвета в 16-ю блоках в левом нижнем углу (см. рисунок). Ваш код может инициализировать эти...

30 10 2020 15:25:17

Разработка устройств на микроконтроллерах AVR: шагаем от чайника до профи (А. Белов)

Книга « Разработка устройств на микроконтроллерах AVR: шагаем от чайника до профи» Белова А. В. поможет Вам всего за шесть несложных шагов преодолеть путь от...

29 10 2020 4:56:11

Создайте список недавно использованных файлов (MRU) в C#

В списке MRU отображаются файлы, которые программа использовала совсем недавно в меню. Если пользователь выбирает файл из списка, программа снова открывает...

28 10 2020 23:40:31

Дмитрий Осипов - Delphi XE2

Настоящее издание посвящено новейшей разработке компании Embarcadero - языку Delphi XE2. Книга предоставляет читателю не только полное описание одного из с...

27 10 2020 21:51:39

Имитация движения мыши и кликов в C#

Эта программа использует функцию API mouse_event для имитации движения мыши и моделирования щелчка мыши. Обработчик события Paint программы рисует круги во...

26 10 2020 6:41:35

Класс Java Scanner

Класс Java Scanner - это класс в пакете Java.util, который позволяет пользователю считывать значения различных типов. Это простой текстовый сканер, который...

25 10 2020 1:35:34

Операции Java ArrayList

Программирование Java для начинающих... ArrayList - одна из самых гибких структур данных из коллекций Java. Arraylist - это класс, который реализует интерф...

24 10 2020 20:13:27


Parse error: syntax error, unexpected ',' in /home/users/9/9165884745/domains/flash-mx.ru/lessons/926.php on line 69