在Windows窗体我有一个包含长文本,形式重相当大的复选框列表..
我可以根据表格宽度的文本中运行时自动换行?
在Windows窗体我有一个包含长文本,形式重相当大的复选框列表..
我可以根据表格宽度的文本中运行时自动换行?
您可以使用:
设置“自动调整”到“假”
改变“MAXIMUMSIZE”到你想要的标签宽度的宽度,说“70”
改变“的minimumSize”的高度,以你想要的标签高度,说“30”
为了使Text
,你需要做包装AutoSize
属性假,允许更大Height
:
checkBox1.AutoSize = false;
checkBox1.Height = checkBox1.Height * 3; // or however many lines you may need
// style the control as you want..
checkBox1.CheckAlign = ContentAlignment.TopLeft;
checkBox1.TextAlign = ContentAlignment.TopLeft;
checkBox1.Anchor = AnchorStyles.Right;
checkBox1.Text = "12321312231232 13189892321 312989893123 ";
您将需要思考的垂直布局..
也许FlowLayoutPanel
帮助那里或者你想测量使用所需的尺寸Graphics.MeasureString
或TextRenderer.MeasureText(String, Font, Size)
!
我试过很多方法,但在最后一个大量的研究后,这一工作: -
简单地我用了两个事件来检测尺寸变化的面板包含控制然后我相应调整控制..
第一个事件是LayoutEventHandler ,为第二事件检测分辨率改变
在这些事件: -
1-得到面板的宽度考虑到分辨率(下接受的分辨率为1024×768)
Rectangle resolution = Screen.PrimaryScreen.Bounds;
int panelWidth *= (int)Math.Floor((double)resolution.Width / 1024);
2-环上所有的控制和调整控制宽度以适合面板宽度(ⅰ减去10个像素垂直滚动宽度),然后我从控制高度MeasureString函数,它接受所述控制文本,字体和控制宽度,和返回控制大小。
(即,I乘以大致因子“1.25”,以克服线的高度和填充高度)
foreach (var control in controls)
{
if (control is RadioButton || control is CheckBox)
{
control.Width = panelWidth - 10;
Font fontUsed = control.Font;
using (Graphics g = control.CreateGraphics())
{
SizeF size = g.MeasureString(control.Text, fontUsed, control.Width);
control.Height = (int)Math.Ceiling(size.Height * 1.25);
}
}
}