我有一个c#app(winform),它从xml文件生成Groupbox,并根据文件中的内容,用Radio Buttons或CheckBoxes填充它。这些组合框中的每一个都有一个名称,其中一些更长,并且在中途被切断。
这就是它们的生成方式。
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
,我不确定这对我有何影响。
答案 0 :(得分:1)
设置组框宽度只是您的一个问题。
可能应该这样做:
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&amp; CheckBoxes及其文本。因此,应在设置之前设置 。AutoSize
,其他GB为false。FlowLayoutPanel
!Add
对吧?如果有些人没有显示,请发布你用它们创建的代码!顺序是这样的: