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

C# 可滚动面板中的组合框导致问题,c#,winforms,compact-framework,.net-2.0,C#,Winforms,Compact Framework,.net 2.0,我有一个面板,AutoScroll设置为true。在其中,我以编程方式添加ComboBox控件。如果我添加了足够多的控件以超过面板的可视大小,就会出现一个滚动条(目前为止还不错)。但是,如果我打开靠近可视区域底部的一个组合框,组合列表将无法正确显示,可滚动区域似乎已展开。这导致所有控件被“拉”到面板的新底部,顶部有一些新的空白。如果我继续点击面板底部的下拉列表,可滚动区域将继续无限扩展。我将控件锚定到左侧、右侧和顶部,因此我认为不涉及锚定。是不是有什么明显的原因导致了这一切 更新:看起来问题在于

我有一个面板,
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);
    }
public Form1()
{
初始化组件();
面板=新面板();
面板尺寸=新尺寸(80200);
panel.AutoScroll=true;
对于(int i=0;i<10;++i)
{
ComboBox cb=新ComboBox();
cb.Anchor=AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
cb.项目。添加(“选项1”);
cb.项目。添加(“选项2”);
cb.项目。添加(“选项3”);
cb.项目。添加(“选项4”);
cb.位置=新点(0,i*24);
面板.控件.添加(cb);
}
控件。添加(面板);
}

如果滚动面板底部并点击底部附近的组合框,您会注意到奇怪的行为。

这似乎是您使用的设备特有的问题。我根本无法复制这种行为。您是否尝试设置面板的Dock属性?其他影响滚动行为的属性(AutoScrollMargin、AutoScrollMinSize、AutoScrollPosition)如何?我还可以使用面板的大小,并可能使用System.Windows.Forms.Screen类根据设备自动确定面板的大小。

尝试将autoscroll设置为false,然后尝试正常使用滚动条


或者,如果您无法找到另一个合理的解决方案,则可以处理滚动/调整大小事件并手动调整/移动控件(就像anchor所做的那样),虽然这样做非常烦人,但可以消除您可能遇到的任何问题。

我也能够针对Windows CE设备进行测试,在VisualStudio2005下,.NETCF2.0,因为我们也有使用旧设备的东西。我没有问题。可能是设备上的Windows CE版本的任何问题导致了该问题?正在使用什么设备(即:制造商?)。我甚至创建了一个全新的单一表单项目,所以没有其他事情会改变/影响您的代码


该行为在调试、运行时或两者都起作用吗?

什么平台?银灯?wpf?闪光winforms?asp?(等等)Winforms,很抱歉之前没有包含该标记。我尝试了您的测试代码,但没有看到与您描述的内容类似的内容。您使用的是哪个版本的Visual Studio?我使用的是Visual Studio 2008。仍在使用.NET CF 2.0支持一些旧设备。也许您正在使用的设备不受此问题的影响?我在3个不同的设备上都运行了WindowsCE5.0。其中两台设备的屏幕分辨率为240x320,第三台设备的屏幕分辨率为320x240(不确定这是否重要)。编辑:我无法使用Visual Studio中的模拟器复制此行为。此行为显然是特定于设备的。我已经在一些设备上试用过,但无法在所有设备上重现。我将联系制造商,看看他们的设备上发生这种情况是否有原因,而不是其他原因。很抱歉反应太晚。。。