Как вы разрешаете базовому элементу управления winforms vb.net обнаруживать щелчки вне элемента управления - PullRequest
0 голосов
/ 08 октября 2018

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

История : я добавляюнастраиваемый текстовый объект управляет формой динамически во время выполнения.Я закодировал в пользовательский текстовый элемент управления несколько событий, используя AddHandler.События, которые я добавил к объекту, которые затем доступны во время выполнения:

MouseMove

MouseDown

MouseDoubleClick

Все они работают отлично, так какЯ могу использовать эти события, чтобы определить, какой текстовый элемент управления нажимается, и, следовательно, использовать информацию, собранную этими событиями, чтобы затем переместить элемент управления в любое место формы.

Чтобы «отредактировать» текст текстового поляпользователь дважды щелкает текстовое поле.Мне нужно сделать это, так как мне нужно отключить событие MouseMove, чтобы пользователь мог затем ввести текстовое поле и выделить / скопировать / вставить текст в текстовое поле.Все это прекрасно работает.

Проблема, с которой я сейчас сталкиваюсь, заключается в включении события MouseMove обратно на .Допустим, пользователь завершил ввод текста в элемент управления текстом.Мне нужно знать, когда пользователь щелкает за пределами элемента управления, чтобы затем я мог повторно активировать событие MouseMove и затем обновлять другие свойства текстового элемента управления, такие как цвет спины, readOnly и т. Д. В основном эта функция предоставляет пользователю доступ для редактирования или перемещенияобъект ака editMode.

Моя первая попытка состояла в том, чтобы использовать событие txtCtrl.LostFocus (), однако это не всегда срабатывает и заставляет меня писать в методе Focus () для каждого элемента управления в приложении Forceсосредоточиться на объекте, отличном от пользовательского текстового элемента управления, с которым пользователь в данный момент взаимодействует.

Как мне сделать это с любыми событиями, кроме методов / событий Фокуса.Существуют ли другие опции / функции, чтобы сделать то, что я себе представляю, возможно?

Пример Скриншот Форма скелета: enter image description here

...