c# - 缩放窗口窗体

标签 c# winforms visual-studio scale designer

基本上,我希望所有内容(控件等)在通过拖动调整大小时随 WindowsForm 一起缩放,以便用户可以自己确定 UI 的大小。 图片并不完美,但我希望它能解释清楚:

Resize approximation

最简单的方法是使用 (Flow/Table)LayoutPanel 和适当的 Anchor/Drop 属性,但我觉得这限制了我的设计,目前看起来像这样:

My Design

我的想法是在调用 Resize() 时缩放所有组件:

foreach(Control c in Controls){
            c.Scale(scaleFactor);
        }

我的问题是:位置设置不正确,确定“scaleFactor”所需的舍入导致不一致。

有没有一种干净的方法可以做到这一切?我是否必须使用 LayoutPanel 才能获得干净的方式?

最佳答案

您确定要同时缩放那些文本框和标签吗?例如,文本框具有相当标准的高度。如果窗口太小以至于文本对于按钮/文本框等来说太大了,你会怎么想?

可调整大小窗口内容的典型调整逻辑有点不同。我宁愿为组框创建一个无边框面板,并像这样堆叠/停靠所有内容:

before resize

如果我调整这个窗口的大小,它将看起来像这样:

after resize

顺便说一句,我不喜欢这样调整按钮的大小。我只会为它们使用 Anchor = Left, Right 以便它们保持高度。并且不要忘记为表单设置适当的 MinimumSize

关于c# - 缩放窗口窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33911313/

相关文章:

c# - Monotouch 在非可空对象上因 NullReferenceException 而崩溃

c# - 为什么 BasicHttpBinding 不需要主体名称就可以在 IIS7 上使用 Kerberos Auth?

c# - .NET Core 的可选构造函数注入(inject)参数

c# - 检测歌曲中的节拍

python - 如何为 Visual Studio 获取 Python 语法高亮显示?

c# - 如何存储 Linq 查询并在以后使用?

c# - 将屏幕转换为客户端坐标问题

c# - 如何使用 C# 启动数据库事务,在 MySQL 上运行多个查询然后提交或回滚?

c# - 使用改变环境的代码进行单元测试的实用方法

visual-studio - VSTS - 如何使用更改集注释?