我正在开发一个Windows窗体应用程序。在我的应用程序中,我将控件锚定到表单,以便可以最大化表单,并相应地对控件进行排列。此应用程序应支持不同的DPI值。
我已将某些控件的锚点设置为bottom,right和bottom-right。表单的AutoScroll属性设置为true。当DPI值处于默认值(96)时,控件按预期工作。但问题是如果屏幕加载的DPI较高(如120),即使启用了表单滚动条,也无法看到固定在底部和右下方的控件。
有人可以就此问题告诉我吗?
的问候, Eranga
答案 0 :(得分:27)
在表单属性中设置AutoScroll = True
答案 1 :(得分:11)
假设我们有一个具有id“panel1”的面板 然后我们可以申请
panel1.autoscroll=true;
panel1.BorderStyle = BorderStyle.FixedSingle;
设置滚动宽度和高度
panel1.SetAutoScrollMargin(int x,int y);
答案 2 :(得分:3)
这是一个旧帖子,但问题仍然存在,相关帖子只是继续SO
!
我在这里做坏死的事情,而不是仅仅因为它来自我的google search
而解决了一个更近期的问题问题很简单:"为什么我的ScrollableControl
上出现该死的滚动条?"
但可能没有特定的,明确的答案。因为原因很多。因为滚动条是否出现在控件上取决于:
在奶牛回家之前,它很容易落入随机摆弄道具价值的陷阱。或者继续i / webs并希望找到一些SO
foos。但亲爱的哦。以下是一些相关的SO
帖子,提出了各种各样的决议:
Horizontal Scrollbar is not visible on DataGridView
Horizontal scrollbar not showing on my textbox
How to set scroll bar in Windows form
How to make scrollbars appear in a resizable panel when the contained control is too big for it?
Scrollable Form in c#, AutoScroll=true doesn't work
How to get scrollbar in Panel in VB.Net?
有VS-designer
属性页面的屏幕截图(如此处所示)&甚至一些基于代码的极端解决方案......我的最爱:
Add vertical scroll bar to panel in .NET
how to add Vscroll control to form in Visualbasic.net?
/叹气/
..以 minimal github解决方案的形式,以探索一些.NET滚动条voodoos:
https://github.com/violet313/TestWinForms/tree/Test1-Body-Panel
使用Visual Studio 2015
的{{1}}解决方案。
在解决方案中,我正在尝试创建一个表单来响应要显示的一些动态文本数据。这是我最终寻求的基本布局:
.NET4.52 framework
我想要表单:
通过以下方式回复动态内容:
抓住它,然后每个(从95dccc5开始只有9个)提交,然后以理智的方式测试你的要求。增量时尚。每当你做出一个可疑的状态变化时,一定要分支。
Irl:也许我很胖但是我花了一个多小时阅读MSDN尝试(并且失败)来弄清楚.NET表格控制属性的突发事件。以这种方式进行结构化的反复试验只花了我20分钟才得到我想要的东西。
--------------------------------------------------
| fixed-size form header | |
------------------------------------| side |
| | panel |
| dynamic content panel | stuff |
| | |
--------------------------------------------------
| fixed-size form trailer |
--------------------------------------------------
我知道这里有一个 yeaz~但是谁在乎呢?但是我不得不离开我的胸口。嘿:
哎呀。因为我的需要而不得不发表并回答这个问题 有利可图地承担微软的合同工作。 paymasters可以 相对(来自开发人员pov)非技术性的,并且阅读了很多 包括以下词语:快速,简单,直接,安全, 等等,给人一种.NETish漫步的印象 公园。我的问题是我会遇到困难 试图合理地解释为什么他们可能需要支付我n-day的费用 值得的工作,以便在一个简单的滚动条上显示 响应形式。
在这个场合,我从未走得那么远。大声笑。我花了几个小时 试图让MSDN肆意挥霍。然后打了个哈欠, 放弃了,并继续进行务实的实施。这是 公认。但它现在是w / end,我是一个不能放过的傻瓜 事情就是。
答案 3 :(得分:0)
我正在阅读this page,可以说它为您的问题提供了准确而又简单的解决方案!
我测试了它,对我来说效果很好。
说明:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
InitializeComponent();
)的类中[DllImport("shcore.dll")]
static extern int SetProcessDpiAwareness(_Process_DPI_Awareness value);
enum _Process_DPI_Awareness
{
Process_DPI_Unaware = 0,
Process_System_DPI_Aware = 1,
Process_Per_Monitor_DPI_Aware = 2
}
InitializeComponent();
)SetProcessDpiAwareness(_Process_DPI_Awareness.Process_DPI_Unaware);