Windows:如何在加载表单时使面板滚动条处于TOP位置

时间:2009-07-17 07:05:13

标签: c# winforms

在Windows窗体中 - 有一个面板,其中添加了文本控件。 在打开表格时,我需要面板滚动条位于TOP position.ie。,靠近第一个控件。 现在打开表单时,面板滚动条位于BOTTOM.ie。,在最后一个控件上。

6 个答案:

答案 0 :(得分:7)

您需要选择面板的第一个元素,垂直滚动条显示在顶部:

firstElement.Select();

答案 1 :(得分:6)

在加载时,尝试将面板的VerticalScroll属性设置为0

panel1.VerticalScroll.Value = 0;

编辑:假设您有panel1.AutoScroll = true

将垂直滚动值设置为0将滚动到顶部,但垂直滑块不会。

此外,也许您可​​以在面板底部获得一些控制焦点(这应该强制面板向下滚动)。将焦点设置到面板顶部的文本框将使滚动保持在顶部。 (但是你可能不想将焦点设置在顶部的控件上)

答案 2 :(得分:1)

我遇到了同样的问题,但是我有自己的用户控件。我尝试了许多尝试,让面板在用许多控件填充后滚动回到顶部。

Nomatter我做了什么总是把VScroll栏放到底部。

经过详尽的测试后,我发现这是因为我的控件将 TabStop 属性设置为true(默认用户控件)导致了问题。

将TabStop设置为 false 修复它。

答案 3 :(得分:0)

如果表单中添加了许多控件,则从上到下依次设置tabIndex属性。如果任何顶部控件的选项卡索引小于任何底部控件的选项卡索引的选项卡索引,则滚动条将设置在顶部。这解决了我的问题。

答案 4 :(得分:0)

我有一个案例,我在购物应用程序上工作,我有一个项目列表UserControl,其中包含订单项UserControl(所有Dock=DockStyle.Top的垂直列表)绘制一幅图片),然后我将项目列表发送到项目列表控件中的方法,而只是创建所有项目控件并将其添加到面板中。

不仅出现的控件一直滚动到底部,而且所有项目的顺序都相反。该列表的排序顺序正确,但是当我将每个列表发送到ItemListControl.Controls.Add()方法时,它的顺序却相反。我使用SetChildIndex()将它们以相反的顺序放置。

public void Add(ItemControl itemControl)
{
    _itemPanel.Controls.Add(itemControl);
    _itemPanel.Controls.SetChildIndex(itemControl, 0);
}

现在我考虑一下,DockStyle.Top实际上可能就是为什么它们以相反的顺序添加的原因。很难说,因为如果我将DockStyle更改为其他名称,控件将不会全部显示。

无论如何,按正确的顺序插入控件可以解决滚动问题。

答案 5 :(得分:0)

在我的情况下,我正在使用以下代码

//to initialize the position of the panel 
panel5.AutoScrollPosition = new Point(panel5.AutoScrollPosition.X, 0);
//to initialize the position of the scroll bar
VScrollBar1.Value = 0;