所以我得到了一个允许我根据另一个标签的值调整标签大小的方法。基本上有一个带有结果的标签,旁边是" KB"标签。示例:30000 KB
所以我已经为方法创建了这个:
public void UpdateSizeKB()
{
lblKB.Show();
lblResultKB.Width = GetLabelsSize(lblResultKB.Text);
lblKB.Left = lblResultKB.Left + lblResultKB.Width + 5;
}
public int GetLabelsSize(string text)
{
return lblResultKB.CreateGraphics.MeasureString(text, lblResultKB.Font).Width() + lblResultKB.Margin.Left + lblResultKB.Margin.Right;
}
我会打电话给表格上的UpdateSizeKB()
。因此,每次lblResultKB
更改时lblKB
都会更改它。
但是函数GetLabelsSize
实际上效果不好,因为它在CreateGraphics
上显示一个错误:
' Control.CreateGraphics()'是一种方法,在给定的上下文中无效
你们有解决这个问题的方法吗?能够做这项工作
答案 0 :(得分:5)
您在CreateGraphics
之后缺少一对括号:
public int GetLabelsSize(string text)
{
return (int)(lblResultKB.CreateGraphics().MeasureString(text, lblResultKB.Font).Width + lblResultKB.Margin.Left + lblResultKB.Margin.Right);
}
即。您实际上必须调用 CreateGraphics()
方法来获取Graphics
对象,而不是尝试访问该方法的属性。 :)
但是,将using
块与Graphics
个对象一起使用是个好习惯,因为它们包装了非托管资源,因此:
public int GetLabelsSize(string text)
{
using (var g = lblResultKB.CreateGraphics()) {
return (int)(g.MeasureString(text, lblResultKB.Font).Width + lblResultKB.Margin.Left + lblResultKB.Margin.Right);
}
}