我正在开发一个 Windows 窗体应用程序。在我的应用程序中,我将控件锚定到表单,以便可以最大化表单并相应地安排控件。此应用程序应支持不同的 DPI 值。
我已将一些控件的锚点设置为底部、右侧和右下角。窗体的 AutoScroll 属性设置为 true。当 DPI 值为默认 (96) 时,控件按预期工作。但问题是,如果屏幕以更高的 DPI(如 120)加载,即使启用了表单滚动条,也无法看到锚定在底部和右下角的控件。
有人可以就这个问题给我建议吗?
问候, 埃兰加
AutoScroll = True
在表单属性中设置
创建一个Panel
被调用的panel
,然后执行以下操作:
panel1.autoscroll = true;
panel1.BorderStyle = BorderStyle.FixedSingle;
使用此方法设置滚动宽度和高度:
panel1.SetAutoScrollMargin(int x,int y);
这是一个旧帖子,但问题仍在继续,相关帖子不断出现SO
!
我在这里做 necro 的事情,而不是仅仅因为它是我的谷歌搜索的顶部而解决一个更新的问题
问题很简单:“为什么我的屏幕上不会出现该死的滚动条ScrollableControl
?”
但不可能有具体的、确定的答案。因为原因是多方面的。因为滚动条是否出现在控件上取决于:
在奶牛回家之前,很容易陷入随机旋转道具值的陷阱。或者去 i/webs &希望找到一些SO
foos。但是哦,亲爱的。以下是一些相关的SO
帖子,其中提出了各种各样的提案:
c# 中的可滚动表单,AutoScroll=true 不起作用
有VS-designer
属性页面的屏幕截图(如这里)甚至一些基于代码的极端解决方案......我的最爱:
如何在 Visualbasic.net 中添加 Vscroll 控件以形成窗体?
/叹气/
..以最小的github 解决方案的形式来探索一些 .NET 滚动条的巫术:
https://github.com/violet313/TestWinForms/tree/Test1-Body-Panel
这是Visual Studio 2015
使用.NET4.52 framework
.
在解决方案中,我试图创建一个响应要显示的一些动态文本数据的表单。这是我最终寻求的基本布局:
--------------------------------------------------
| fixed-size form header | |
------------------------------------| side |
| | panel |
| dynamic content panel | stuff |
| | |
--------------------------------------------------
| fixed-size form trailer |
--------------------------------------------------
我希望表格:
通过以下方式响应动态内容:
抓住它,检查每个(从 95dccc5 开始只有 9 个)提交,然后以理智和渐进的方式测试你的需求。每当您进行可疑的状态更改时,请务必进行分支。
Irl:也许我是个笨蛋,但我花了一个多小时阅读 MSDN,试图(&failing)找出 .NET 表单控制属性的意外情况。以这种方式进行结构化的试错只花了我 20 分钟就得到了我想要的东西。
y~bwc
我知道这是一个 yeaz〜但谁在乎呢?但我必须离开我的胸膛。呵呵:
grrr。不得不揭开并回答这个问题是因为我需要有利可图地承担微软的合同工作。paymasters 可能相对(从开发人员的观点)非技术性,并且阅读了很多东西,包括:快速、简单、直接、安全等,给人的印象是 .NETish 是在公园。我的问题是,我很难合理地解释为什么他们可能需要为 n 天的工作付钱给我,以便让一个简单的滚动条出现在响应式表单上。
在这种情况下,我从来没有走那么远。哈哈。我花了几个小时涉足 MSDN 的废话,试图让它发生。然后打了个哈欠,放弃了,继续务实的实施。这被接受了。但现在是结束了,我是一个不能让事情发生的强迫症傻瓜。
我正在阅读此页面,我可以说它为您的问题提供了一个准确而简单的解决方案!
我对其进行了测试,它对我来说效果很好。
操作说明:
<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);