gpt4 book ai didi

c# - Groupbox根据文本长度调整宽度

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

我有一个 c# 应用程序 (winform),它从 xml 文件生成组框,并根据文件中的内容,用单选按钮或复选框填充它。这些组框中的每一个都有一个名称,其中一些更长,并且在中途被切断。

enter image description here

这就是它们的生成方式。

int nc = groupNodes.Count;
for (int i = 0; i < nc; i++)
{
node = groupNodes[i];
GroupBox box = new GroupBox();
box.AutoSize = true;
box.AutoSizeMode = AutoSizeMode.GrowAndShrink;
box.Text = node.Attributes["name"].Value;
//......
}

我尝试使用以下,

Size textSize = TextRenderer.MeasureText(box.Text,box.Font);
box.Width = (int)textSize.Width;

并尝试了以下

box.width = (int)box.text.length;

但这一切都没有任何区别。

我也遇到了This thread .但由于我不使用 PaintEventArgs,所以我不确定这是否适用于我。

最佳答案

设置组框宽度只是您的问题之一。

它可能应该这样做:

groupBox.AutoSize = true;
int oWidth = groupBox1.Width;
int tWidth = (int)groupBox.CreateGraphics().
MeasureString(groupBox.Text, groupBox.Font).Width;

if (tWidth > oWidth)
{
groupBox.AutoSize = false;
groupBox.Width = tWidth;
}

注意:

  • 此代码使用了 AutoSize 属性。这将使 GB 足够宽以容纳其内容,即。 RadioButtons&CheckBoxes 及其文本。因此,应在调整 GB 大小之前设置它们。
  • 结果将有 AutoSize 对于某些 GB 为 true,对于其他 GB 为 false..
  • 更改 GB 的宽度后,它们将需要重新定位,除非它们位于 FlowLayoutPanel 中!
  • 它们的内容(RadioButtons 等应该仍然像您之前放置的那样正确放置)。您确实将它们添加 到 GB,对吗?如果有些没有显示,请发布您创建它们所用的代码!

所以顺序是这样的:

  1. 用他们的文本创建 GB
  2. 用他们的文本添加内容
  3. 调整 GB 大小
  4. 重新定位 GB(FLP 不需要)

关于c# - Groupbox根据文本长度调整宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507638/

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