У меня есть панель с 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);
}
Если вы прокрутите нижнюю часть панели и коснитесь поля со списком внизу, вы ' Я заметлю странное поведение.