Добавление к прокручиваемой панели с местоположением - PullRequest
4 голосов
/ 25 марта 2011

Эй, ребята, я использую Panel для хранения списка элементов управления (определяемых пользователем). При добавлении панелей я устанавливаю расположение элемента управления на основе Panel.Controls.Count, прежде чем добавить его на панель.

comRec.Location = new Point(comRec.Location.X, panel1.Controls.Count * 25);
panel1.Controls.Add(comRec);

Теперь, это работает хорошо и выглядит именно так, как я хочу. Однако, как только мы достигнем предела в окне, AutoScroll разрешает (что я хочу). Теперь, если пользователь прокрутит до нижней части Panel, это в конечном итоге изменит местоположение каждого элемента управления на панели. Вместо моего первого значения comRec.Location (0,0), это что-то вроде (0, -219). Так что теперь, когда пользователь добавляет еще один объект comRec, он создает ОГРОМНЫЙ разрыв между объектами.

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

Кроме того, есть ли ЛУЧШИЙ способ отобразить список элементов управления? Должен ли я использовать Panel?

Ответы [ 3 ]

5 голосов
/ 25 марта 2011

Посмотрите на FlowLayoutPanel , это именно то, что вы что.

1 голос
/ 04 февраля 2013

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

panel1.SuspendLayout();
// Add controls ...
panel1.ResumeLayout();

Это помогло мне в аналогичной ситуации, когда пользователь мог динамически изменять видимость существующих элементов управления.

1 голос
/ 25 марта 2011

Вы можете добавить дополнительную панель в иерархию:

Outer panel (scrollable)
    Inner panel (not scrollable, resize it whenever you add a control)
        User Defined Control 1
        User Defined Control 2
        User Defined Control 3
        User Defined Control 4
        ...

Таким образом, местоположения ваших дополнительных элементов управления будут относительно их прямого родителя, панели без прокрутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...