【问题标题】:Reset the panel scroll position in winform application c#在winform应用程序c#中重置面板滚动位置
【发布时间】:2012-06-14 09:09:28
【问题描述】:

我正在开发 winfom 应用程序 c#。 我有两种形式,分别称为WelomeDetails。 详细信息在面板中包含 7 个网格。

场景: 如果我单击欢迎页面上的任何项目,它将进入带有七个网格的详细信息页面。如果我向下拖动滚动条,并在回到欢迎表单后返回,滚动条仍然停留在同一位置。

问题: 每次用户访问详细信息表单时,我想将滚动位置重置为顶部,以便我始终可以看到第一个网格。

【问题讨论】:

标签: c# winforms


【解决方案1】:

AutoScroll 设置为true

panel1.AutoScroll = true;

然后,在详细信息表单的load 事件中,设置VerticalScroll

panel1.VerticalScroll.Value = 0;

【讨论】:

  • 如此简单!然而,我发现这种方式比子类化更容易!
【解决方案2】:

如果 Angshuman Agarwal 的回答对您不起作用,那么罪魁祸首可能是在加载后表单中的某些控件正在接收焦点,这将滚动到视图中并覆盖对滚动位置的任何更改。

可以TabStop 设置为false,但这样您的表单就不会是tabbable :(

一个笨重但仍然相对简单的解决方法是手动将焦点放在表单中的第一个控件上:

yourFirstControl1.Select();

另见How to make the panel scroll bar to be at the TOP position on loading the form

【讨论】:

    【解决方案3】:

    旧帖子,但仍然相关。以上仅在我添加一行时才有效:

    displayPanel.AutoScroll = true;
    displayPanel.AutoScrollPosition = new Point(displayPanel.AutoScrollPosition.X, 0);
    displayPanel.VerticalScroll.Value = 0;
    

    然后它工作得很好,无需设置任何标签索引。

    【讨论】:

      【解决方案4】:

      上面说的很好,但是你应该在 Panel1_Paint 中添加 VerticalScroll.Value

      Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint    
      Panel1.VerticalScroll.Value = 0
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        • 2023-03-27
        • 2018-06-19
        • 1970-01-01
        相关资源
        最近更新 更多