C# MDI父窗体中的滚动条刷新问题
我有一个以图形窗口作为子窗口的父窗体。 在父窗体中,面板左侧有一些按钮。 在父窗体的剩余区域中,将显示子窗口。我正在以以下方式手动定位子窗口 第一窗口 第二窗口 第三个窗口,以垂直方式。因此,这也会在父窗体的右侧创建一个滚动条 单击图形按钮后,将创建子窗口并将其定位在所有其他子窗口的底部。由于添加了一个新窗口,滚动条大小也需要刷新。仅当我将光标悬停在滚动条上时,滚动条的垂直高度才会改变。 因此,我点击左侧的按钮,然后要更新滚动条,我需要移动右侧滚动条上的光标 我试图访问滚动条,但由于它是自动生成的,我无法找到方法刷新它或手动提供焦点 问题如下: 应该是这样的 我上传了一段视频来展示这个行为,还有一个演示项目。 演示项目: 屏幕共享视频: 是否可以在不移动用户光标或用户单击滚动条的情况下更新滚动条 打开或关闭子窗口后,我试图更改MdiParentForm.VerticalScroll.Minimum和maximum,但没有帮助。我还尝试禁用和启用垂直滚动以及MdiParentForm.AdjustFormScrollbars,但没有成功 我有autoscroll=false,因为我无法以MDI容器形式使其为真。 创建子窗口后,我以父窗体的形式编写了下面的内容C# MDI父窗体中的滚动条刷新问题,c#,.net,winforms,mdi,mdiparent,C#,.net,Winforms,Mdi,Mdiparent,我有一个以图形窗口作为子窗口的父窗体。 在父窗体中,面板左侧有一些按钮。 在父窗体的剩余区域中,将显示子窗口。我正在以以下方式手动定位子窗口 第一窗口 第二窗口 第三个窗口,以垂直方式。因此,这也会在父窗体的右侧创建一个滚动条 单击图形按钮后,将创建子窗口并将其定位在所有其他子窗口的底部。由于添加了一个新窗口,滚动条大小也需要刷新。仅当我将光标悬停在滚动条上时,滚动条的垂直高度才会改变。 因此,我点击左侧的按钮,然后要更新滚动条,我需要移动右侧滚动条上的光标 我试图访问滚动条,但由于它是自动生成
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();
链接
我想出来了。
错过了很小的事情。
我需要写作
this.Refresh();
在此之后。执行布局();
它成功了。我忘了提到,在创建或关闭子窗口后,我已经尝试从父窗体调用此.Performlayout()。滚动条从未反映任何更改。@saumilpatel听起来好像您没有设置PropertyGrid的Dock属性,使其浮动在MdiClient的顶部。将PropertyGrid的Dock属性设置为Right,然后MdiClient将仅限于表单的其余部分,滚动条应显示在您希望的位置。我的问题与您提供的链接不同。没有任何东西是浮动的,所有东西都定位正确。滚动条也会出现。问题是滚动条的奇怪行为
this.Refresh();