MDI父窗体中的滚动条刷新问题

时间:2013-11-28 05:49:47

标签: c# .net winforms mdi mdiparent

我有一个带有图形窗口的父窗体作为子窗口。 在父窗体中,面板左侧有按钮。 在父窗体的其余区域中,将显示子窗口。我正在以下列方式手动定位子窗口。

第一个窗口

第二个窗口

第3个窗口,垂直方向。因此,这也会在父窗体的右侧创建一个滚动条。

单击图形按钮后,将创建子窗口并将其定位在所有其他子窗口的底部。由于添加了一个新窗口,因此还需要刷新滚动条大小。只有当我将光标悬停在滚动条上时,条形的垂直高度才会改变。 所以,我点击左侧的按钮,然后更新滚动条,我需要将光标移动到右侧的滚动条上。

我试图访问滚动条,但由于它是自动生成的,我无法找到一种方法来刷新它或手动提供焦点。

问题如下: issue http://i39.tinypic.com/s4njh2.png

应该如何

this is how it should be http://i40.tinypic.com/2w2iydf.png

我上传了一个视频来展示行为,还有一个演示项目。 演示项目:http://www.filedropper.com/demoforscrollbar 屏幕分享视频:http://tinypic.com/r/ic0615/5

无论如何我可以在没有用户光标移动或用户点击它的情况下更新滚动条吗?

我打开或关闭子窗口后尝试更改MdiParentForm.VerticalScroll.Minimum和maximum,但它没有帮助。我还试图禁用并启用垂直滚动以及MdiParentForm.AdjustFormScrollbars,但是没有用。

我有autoscroll = false,因为我无法以mdicontainer形式实现它。 在我创建子窗口后,我在下面以父窗体形式写了。

    this.VerticalScroll.Minimum = 0;
    this.VerticalScroll.Maximum = this.MdiChildren[this.MdiChildren.Length -1].Location.Y + this.MdiChildren[this.MdiChildren.Length - 1].Height;
    this.AdjustFormScrollbars(true);            
    this.PerformLayout();

2 个答案:

答案 0 :(得分:1)

Private Sub Form2_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
    Me.ParentForm.PerformLayout()
End Sub

链接

Refresh scroll bars on winform

答案 1 :(得分:0)

我明白了。 错过了很小的事情。 我需要写

    this.Refresh(); 

在this.performlayout()之后; 它成功了。