2015-03-03 3 views
0

У меня есть приложение со множеством таблеток. Одна из функций моей программы заключается в том, что если пользователь покидает приложение более 3 минут, я показываю основную вкладку, на которой отображается наиболее релевантная информация (это делается с помощью таймера, называемого «back_to_main_tab»). Все идет нормально. Однако в нескольких вкладках вы можете ввести текст и «сделать паузу» более трех минут, и если это произойдет, пользователь вернется на главную вкладку без его согласия, удалив введенный текст.VB.net (2010) Прокрутка по всем элементам управления

Я понимаю, что это можно решить, включив/отключив back_to_main_tab-timer в стратегических местах, но я хотел бы решить его, сбросив таймер каждый раз, когда клик зарегистрирован в приложении независимо от того, что нажал. Причина этого в том, что проблема не уникальна для определенной закладки, поэтому я хотел бы иметь «универсальный» -фикс для всех табуляций.

Возможно ли это?

Заранее спасибо

Jonas

ответ

0

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

Например

Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown 
    'Reset timer 
End Sub 

(и вы можете попробовать KeyUp или KeyPress тоже).

Таким образом, вы можете сбросить таймер каждый раз, когда пользователь что-то напишет где-нибудь. Btw, если 3mins проходят (после последнего KeyPress), back_to_main_tab стирает все.

EDIT Итак, вы можете сделать одну функцию для управления событием CLICK. И прикрепите функцию ко всем элементам. Чтобы attacch обработчик событий алла элемента вы можете попробовать что-то вроде этого

Private Sub AddGenericEventHandler() 
     For Each Ctrl As Item In Form.Items 
       AddHandler Ctrl.Click, AddressOf MyClickHandler 
     Next 
    End Sub 

И написать функцию, сбросить таймер

Public Sub MyClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    'Timer Reset 
    End Sub 

Это идея. Вы должны правильно написать FOR EACH, чтобы поймать все элементы формы, которые вам нужны.

+0

Поскольку приложение используется в первую очередь с сенсорным экраном (о котором я не упоминал, я плохой), я бы хотел, чтобы все клики были сделаны для приложения независимо от того, какой элемент управления нажат, и независимо от того, какая вкладка в настоящее время используется. Моя идея заключалась в том, чтобы написать нечто общее, которое ловит эти клики независимо от того, где они происходят, в одном месте приложения, а не в каждом элементе, где пользователь может писать. (Будет просто слишком много дублированного кода.) Это «одно место» было бы где-то в основной форме, где бы находились все табуляции, я просто не знаю, где. – Nephilim77

+0

Я отредактировал свое сообщение, чтобы предложить вам другой подход, чтобы сделать только одну функцию, чтобы обрабатывать все «щелчки» в вашей форме. Дайте мне знать – GMazzacua

+0

Ах, метод «loop-through-all-controls» может быть ответом, который я ищу, по крайней мере, это лучшая идея, чем то, к чему я придумал. Думаю, я пойду с таким подходом. Спасибо, сестра. – Nephilim77

Смежные вопросы