Поскольку, очевидно, никто не видел такого поведения раньше и не мог дать быстрый ответ, я открыл Visual Studio, чтобы попытаться воспроизвести то, что вы описываете.
Я создал новый проект WinForms с GroupBox
, содержащимPanel
, свойство AutoScroll
которого установлено в "True".Затем я добавил два новых GroupBox
элемента управления внутри элемента Panel
, каждый из которых содержал два элемента управления TextBox
.Первый встроенный GroupBox
находится вверху формы, полностью видимый при запуске;второй встроенный GroupBox
находится внизу, где его необходимо прокручивать для просмотра.Это эквивалентно дизайну / макету, которые у вас есть, насколько я могу судить из вашего описания и видео.
Однако, когда я запускаю проект, прокрутите вниз до второго встроенного GroupBox
и выберите один изTextBox
контролирует, что он содержит, он выполняет точно так, как ожидалось .Элемент управления TextBox
, на который я нажал, получает фокус, без прокрутки всей панели обратно вверх.Я не могу воспроизвести то, что вы видите.Если бы вы могли сказать мне, что я сделал неправильно при разработке моего тестового образца, или опубликовать наименьший пример проекта, необходимый для воссоздания поведения, с которым вы столкнулись, я мог бы помочь.
В противном случае, вотнесколько советов для изучения:
Порядок табуляции объектов в вашей форме. Это действительно не должно вызывать поведение, описанное, потому что нажатие на элементе управления должно установить фокус на этот элемент управления, независимо от его положения в порядке вкладок, и повторное переключение порядка вкладок в моем примере проекта по-прежнему не дает того же эффекта.Но я полагаю, что в любом случае стоит попробовать.В режиме «Дизайн» перейдите в меню «Вид» и нажмите «Порядок вкладок».Все элементы управления, для которых вы можете установить порядок вкладок, будут иметь маленькую цветную рамку в верхнем левом углу, указывающую их порядок вкладок в каждом контейнере.Чтобы установить порядок табуляции, нажмите один раз на каждый из элементов управления в том порядке, в котором вы хотите, чтобы они были сфокусированы.
Найдите свой код для любого <Control>.Focus
или <Control.Select>
операторов. Убедитесь, что у вас нет кода проверки, который каким-либо образом изменяет порядок табуляции во время выполнения.Это может привести к тому, что фокус переместится обратно к элементу управления, расположенному в верхней части вашего Panel
, и заставит его автоматически прокрутиться до нового местоположения.
Попробуйте воспроизвестиповедение в новом, чистом проекте. В идеале, создайте новый проект в Visual Studio и расположите элементы управления точно так же, как они есть в проекте, с которым вы испытываете трудности,Это то же самое, что я и сделал, отчасти потому, что у меня нет вашего конкретного проекта для работы, а также потому, что это лучший способ устранения неполадок, связанных с особенно сложным поведением.Скорее всего, в вашем дизайне или исходном коде есть какая-то особенность, которая вызывает такое поведение, а не какая-то ошибка в самих элементах управления.Но в любом случае, это позволит вам точно знать , где проблема возникает, что приблизит вас к решению.