У меня есть панель с AutoScroll
, установленным на true
.В нем я программно добавляю ComboBox
элементы управления.Если я добавлю достаточно элементов управления, чтобы превысить видимый размер панели, появится полоса прокрутки (пока все хорошо).Однако, если я открою одно из полей со списком в нижней части видимой области, список со списком будет отображаться неправильно, и прокручиваемая область будет расширена.Это приводит к тому, что все элементы управления «вытягиваются» на новое дно панели с новым пустым пространством вверху.Если я продолжу нажимать на раскрывающийся список внизу панели, прокручиваемая область будет продолжать расширяться до бесконечности.Я закрепляю элементы управления слева, справа и сверху, поэтому я не думаю, что это связано с привязкой.Есть ли что-то очевидное, что может быть причиной этого?
Обновление: похоже, проблема заключается в закреплении элементов управления справа.Если я не закреплюсь вправо, то не получу странного поведения.Однако без правильной привязки элемент управления отключается полосой прокрутки.
Вот упрощенный тестовый пример, который я построил и который показывает проблему:
public Form1()
{
InitializeComponent();
Panel panel = new Panel();
panel.Size = new Size(80, 200);
panel.AutoScroll = true;
for (int i = 0; i < 10; ++i)
{
ComboBox cb = new ComboBox();
cb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
cb.Items.Add("Option 1");
cb.Items.Add("Option 2");
cb.Items.Add("Option 3");
cb.Items.Add("Option 4");
cb.Location = new Point(0, i * 24);
panel.Controls.Add(cb);
}
Controls.Add(panel);
}
Если прокрутить нижнюю часть панелии нажмите на поля со списком внизу, вы заметите странное поведение.