Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6088
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Переопределить поведение вкладки в WinForms
У меня есть UserControl, который состоит из трех TextBoxes. На форме я могу иметь один или несколько или мой UserControl. Я хочу реализовать свое собственное поведение вкладки, поэтому, если пользователь нажимает Tab во втором TextBox, я должен перейти только к третьему TextBox, если во втором TextBox что-то введено. Если ничего не вводится во втором TextBox следующий элемент управления формы должен получить фокус в соответствии с обычным поведением вкладки. Если пользователь ничего не ввел в первом или втором TextBox и на вкладке presses есть этот особый случай, когда элемент управления в форме должен быть пропущен.
С помощью ProcessDialogKey мне удалось заставить его работать нормально, но у меня все еще есть одна проблема. Мой вопрос заключается в том, есть ли способ определить, как элемент управления WinForms получил фокус, так как я также хотел бы знать, получил ли мой UserControl фокус с вкладки или Shift-Tab, а затем сделал свои странные вещи, но если пользователь нажимает на элемент управления, я не хочу делать ничего особенного.
Как правило, я бы сказал, что переопределение стандартного поведения ключа TAB было бы плохой идеей. Возможно, вы можете сделать что-то вроде отключения 3-го текстового поля до тех пор, пока не будет сделана допустимая запись во 2-м текстовом поле.
Теперь, сказав это, я также нарушил это правило по просьбе клиента. Мы сделали функцию enter key похожей на клавишу tab, где клавиша enter сохранит значение в текстовом поле и переместит курсор в следующее поле.
Я не думаю, что есть встроенный способ, которым вы могли бы это сделать. Все события фокуса WinForms (GotFocus,LostFocus, Enter, Leave) вызываются с пустыми параметрами EventArgs, которые не дадут вам никакой дополнительной информации.
Лично я бы отключил третий textbox, как сказал Роб Томас. Однако, если вы твердо решили сделать это, вам не составит труда создать ручное (читай: хакское) решение. После нажатия клавиши tab (если фокус находится на втором textbox) установите переменную внутри формы. Если следующий объект фокусируется на третьем textbox, то вы точно знаете, как это произошло.
Причина такого странного поведения вкладки заключается в скорости процесса ввода. Это было действительно хорошо, чтобы получить некоторый ввод, я не думал об отключении a textbox, но это действительно могло сработать. Но использование клавиши Enter для принятия ввода даже не пришло мне в голову. Это будет работать намного лучше. Пользователь может ввести цифры, а затем нажать enter, чтобы принять ввод, и следующий возможный textbox будет активным. Это как иметь торт и есть его тоже, фактор скорости есть, так как при использовании клавиши enter не нужно делать ненужных вкладок, чтобы добраться до нужного поля, а использование клавиши enter рядом с цифровой клавиатурой делает его действительно гладким.
Спасибо за Ваш вклад!
Лучше, чем отключать элементы управления, попробуйте повозиться с TabStop - если это ложь, элемент управления будет просто пропущен при закладке.
Я бы также предположил, что измененное событие TextBox-это место для обновления TabStop на других элементах управления.
Я сделал нечто подобное с помощью элемента управления login, где пользователи могли вводить либо имя пользователя, либо адрес email (в отдельных полях), а также свой пароль, и tabStop-это то, что я использовал для выполнения этой работы.