Поле со списком на прокручиваемой панели, вызывающее проблемы

У меня есть панель с 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);
    }

Если вы прокрутите нижнюю часть панели и коснитесь поля со списком внизу, вы ' Я заметлю странное поведение.

6
задан Dennis 9 November 2010 в 15:39
поделиться