2015-09-04 4 views
3

У меня есть вкладка с материалами в ней. У некоторых моих пользователей есть крошечные экраны, на которых некоторые из этих материалов не подходят. Когда я устанавливаю AutoScroll true в TabPage, он добавляет полосы прокрутки, как и ожидалось. Однако ...C# Winforms: Полосы прокрутки без AutoScroll

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

Если отключить AutoScroll, ListBox работает правильно, но пользователь не имеет возможности прокручивать TabPage.

Я попытался добавить панели и TableLayoutPanels и возиться с различными комбинациями, которые имеют AutoScroll, а какие нет.

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

Редактировать: Обратите внимание, что некоторые пользователи имеют большие экраны. На экранах эти экранов достаточно, чтобы отобразить всю TabPage без прокрутки, и она работает правильно.

Как я могу получить прокрутки без авто поведение прокрутки?

+0

Вы можете реализовать полосы прокрутки вручную, опираясь на VScrollBar & HScrollBar. – varocarbas

ответ

2

Попробуйте создать новый элемент управления панели, как это:

public class PanelEx : Panel { 
    protected override Point ScrollToControl(Control activeControl) { 
    return this.DisplayRectangle.Location; 
    } 
} 

Положите эту панель внутри TabPage и установить свойство Dock для заполнения. Поместите все элементы управления внутри этой панели, а не TabPage.

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

  • Нет связанных вопросов^_^