可滚动面板中的组合框导致问题

Den*_*nis 6 c# compact-framework .net-2.0 winforms

我有一个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);
    }
Run Code Online (Sandbox Code Playgroud)

如果您滚动面板底部并点击底部附近的组合框,您会发现奇怪的行为.

Mic*_*ann 0

这似乎是您所使用的设备特有的问题。我根本无法重现这种行为。您是否尝试过设置Panel的Dock属性?影响滚动行为的其他属性(AutoScrollMargin、AutoScrollMinSize、AutoScrollPosition)怎么样?我还会调整面板的大小,并可能使用 System.Windows.Forms.Screen 类根据设备自动确定它。