【发布时间】:2012-06-14 09:09:28
【问题描述】:
我正在开发 winfom 应用程序 c#。
我有两种形式,分别称为Welome 和Details。
详细信息在面板中包含 7 个网格。
场景: 如果我单击欢迎页面上的任何项目,它将进入带有七个网格的详细信息页面。如果我向下拖动滚动条,并在回到欢迎表单后返回,滚动条仍然停留在同一位置。
问题: 每次用户访问详细信息表单时,我想将滚动位置重置为顶部,以便我始终可以看到第一个网格。
【问题讨论】:
我正在开发 winfom 应用程序 c#。
我有两种形式,分别称为Welome 和Details。
详细信息在面板中包含 7 个网格。
场景: 如果我单击欢迎页面上的任何项目,它将进入带有七个网格的详细信息页面。如果我向下拖动滚动条,并在回到欢迎表单后返回,滚动条仍然停留在同一位置。
问题: 每次用户访问详细信息表单时,我想将滚动位置重置为顶部,以便我始终可以看到第一个网格。
【问题讨论】:
将AutoScroll 设置为true
panel1.AutoScroll = true;
然后,在详细信息表单的load 事件中,设置VerticalScroll
panel1.VerticalScroll.Value = 0;
【讨论】:
如果 Angshuman Agarwal 的回答对您不起作用,那么罪魁祸首可能是在加载后表单中的某些控件正在接收焦点,这将滚动到视图中并覆盖对滚动位置的任何更改。
您可以将TabStop 设置为false,但这样您的表单就不会是tabbable :(
一个笨重但仍然相对简单的解决方法是手动将焦点放在表单中的第一个控件上:
yourFirstControl1.Select();
另见:How to make the panel scroll bar to be at the TOP position on loading the form
【讨论】:
旧帖子,但仍然相关。以上仅在我添加一行时才有效:
displayPanel.AutoScroll = true;
displayPanel.AutoScrollPosition = new Point(displayPanel.AutoScrollPosition.X, 0);
displayPanel.VerticalScroll.Value = 0;
然后它工作得很好,无需设置任何标签索引。
【讨论】:
上面说的很好,但是你应该在 Panel1_Paint 中添加 VerticalScroll.Value
Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint
Panel1.VerticalScroll.Value = 0
End Sub
【讨论】: