在Windows窗体中启用滚动条

我正在开发一个Windows窗体应用程序。 在我的应用程序中,我已将控件锚定到表单,以便可以最大化表单并相应地安排控件。 此应用程序应支持不同的DPI值。

我已经将一些控件的锚点设置为底部,右侧和右下角。 表单的AutoScroll属性设置为true。 当DPI值处于默认值(96)时,控件按预期工作。 但问题是如果屏幕加载的DPI较高(如120),即使启用了表单滚动条,也无法看到锚定在底部和右下方的控件。

有人可以就这个问题告诉我吗?

问候,Eranga

在表单属性中设置AutoScroll = True

在表单上设置AutoScroll = true

假设我们有一个id为“panel1”的面板
然后我们可以申请

 panel1.autoscroll=true; panel1.BorderStyle = BorderStyle.FixedSingle; 

设置滚动宽度和高度

 panel1.SetAutoScrollMargin(int x,int y); 

这是一个古老的post,但问题是持续的,相关的post只是继续到达SO

我在这里做的是坏死的事情而不是解决一个更近期的问题只是因为它是我的谷歌搜索的顶部

问题很简单: “为什么我的ScrollableControl上不会出现该死的滚动条?”

但是, 没有具体的,明确的答案 。 因为原因很多。 因为控件上是否显示滚动条取决于:

  • 不仅仅是它自己的属性设置
  • 但也取决于它的父母控制状态
  • 以及任何儿童控制的状态。

在奶牛回家之前,很容易陷入随意捣乱道具值的陷阱。 或者继续i / webs并希望找到一些SO foos。 但亲爱的哦。 以下是一些相关的SOpost,提出了各种各样的提议:

水平滚动条在DataGridView上不可见

水平滚动条未显示在我的文本框中

如何在Windows窗体中设置滚动条

如果包含的控件太大而无法在可resize的面板中显示滚动条?

c#中的可滚动表单,AutoScroll = true不起作用

如何在VB.Net中的Panel中获取滚动条?

VS-designer属性页面的屏幕截图(比如这里)甚至是一些基于代码的极端解决方案…我的最爱:

在.NET中将垂直滚动条添加到面板

如何在Visualbasic.net中添加Vscroll控件到表单?

/叹息/


一般答案

..以最小 github解决方案的forms,以探索一些.NET滚动条voodoos:

https://github.com/violet313/TestWinForms/tree/Test1-Body-Panel

它是使用.NET4.52 frameworkVisual Studio 2015解决方案。

在解决方案中,我正在尝试创建一个响应要显示的动态文本数据的表单。 这是我最终寻求的基本布局:

 -------------------------------------------------- | fixed-size form header | | ------------------------------------| side | | | panel | | dynamic content panel | stuff | | | | -------------------------------------------------- | fixed-size form trailer | -------------------------------------------------- 

我希望表单:

  • 不能由用户resize
  • 通过以下方式回复动态内容:

    • 尽可能小地缩小到预先确定的最小形状尺寸。
    • 成长到预先确定的最大形状尺寸; 然后在动态内容面板上提供适当的滚动条。

抓住它,每个(从95dccc5开始只有9个)提交,然后以理智和增量的方式测试您的需求。 每当你做出一个可疑的状态改变时,一定要分支。

Irl:也许我很胖但是我花了一个多小时阅读MSDN尝试(并且失败)找出.NET表格控制属性的突发事件。 以这种方式进行结构化的反复试验只花了我20分钟才得到我想要的东西。


y~bwc

我知道这是一个yeaz~但谁在乎呢? 但是如果我的胸膛不得不离开的话。 嘿:

哎呀。 由于我需要有利可图地承担微软的合同工作,因此不得不冒险并回答这个问题。 paymasters可以相对(来自开发人员pov)非技术性的,并且阅读了很多东西,包括快速,简单,直接,安全等等,让人觉得.NETish是漫步的。公园。 我的问题在于,我将难以合理地解释为什么他们可能需要支付我n天的工作量才能让一个简单的滚动条显示在响应式表格上。

在这个场合,我从未走得那么远。 大声笑。 我花了几个小时趟MSDN,试图让它成为现实。 然后打了个哈欠,放弃了,继续进行务实的实施。 被接受了。 但它现在是w / end,我是一个不能让事情成为现实的傻瓜。