gpt4 book ai didi

c# - 在运行时确定控件的 'AutoSize' 大小

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:34 25 4
gpt4 key购买 nike

我想在运行时布局控件(动态创建)。出于这个问题的目的,让我们限制为 Button 控件。我想设置控件的属性(例如 Text),然后确定控件的最小尺寸以使其正常显示;设置 AutoSize = true 的大小。在 C# 示例代码中,GetAutoSizeSize 是这个最小大小:

Button button = new Button();
this.Controls.Add(button);

button.Text = "Example";
button.Size = GetAutoSizeSize(button);
button.Location = /* Some calculation based on button.Size */

可能的解决方案:AutoSize

可以设置 button.AutoSize = truebutton.AutoSizeMode = AutoSizeNode.GrowAndShrink。之后,可以获取 button.Size,之后可以关闭 AutoSize 并可以更改控件大小。

潜在问题:

  • 它看起来很奇怪,我忍不住觉得这很容易坏,但也许我错了?

可能的解决方案:GetPreferredSize

button.GetPreferredSize 可用于获取控件想要的大小。

问题:

  • 它的用法是内部使用和/或用于流式布局。
  • GetPreferredSize 将建议的大小作为参数,因此需要猜测什么是合适的。
  • 返回的大小是错误的,因为它返回了控件的“舒适”大小,它可能比 AutoSize 给出的最小大小大得多。

编辑: 从评论和一些反复试验中,我能够得出结论,我最初使用 AutoSize 方法列出的问题是由于需要将两个控件都添加到首先控制集合并将 AutoSizeMode 设置为 GrowAndShrink

我想知道是否有确定 AutoSize-size 的函数(和/或更“稳健”的方式):像 GetPreferredSize 这样的函数返回大小而无需实际切换自动调整大小

最佳答案

这在您在控件上绘图时有效。

String sMyString = "this is my string";
Font fntFont = new Font("Arial", 8);
SizeF sfMySize = new SizeF(5,5);
sfMySize = System.Graphics.MeasureString(sMyString, fntFont, sfMySize);

这将为您提供控制文本周围的边界框的尺寸。您必须在文本周围找出适当的缓冲区来设置按钮大小。

关于c# - 在运行时确定控件的 'AutoSize' 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28572750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com