c#动态创建的标签尺寸不够宽
问题描述:
动态创建标签时,缺少一部分文本。这是因为标签的大小不够宽,它会切割实际字符串的一部分。c#动态创建的标签尺寸不够宽
我该如何简单地停止?我不想也没有记得为标签设置尺寸。是不是应该继续直到字符串是空的?
示例:value =“狂战士的铁斧”,它只显示“狂战士之铁”,因为我没有将它的大小设置为字符串的一部分。
PictureBox finalResult_pBox = new PictureBox {
Name = "finalResult_pBox" + i,
Size = new Size(64, 64),
Padding = new Padding(0),
BorderStyle = BorderStyle.FixedSingle,
ImageLocation = spidyApi_idByName_result.results[i].img.ToString(),
};
MessageBox.Show(spidyApi_idByName_result.results[i].name.ToString());
Label finalResult_itemName_label = new Label{
Name = "finalResult_itemName_label" + i,
Text = spidyApi_idByName_result.results[i].name,
};
FlowLayoutPanel finalResult_panel = new FlowLayoutPanel{
FlowDirection = FlowDirection.TopDown,
BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle,
Name = "result_flowLayoutPanel" + i,
Size = new System.Drawing.Size(790, 64),
TabIndex = i,
};
finalResult_panel.Controls.Add(finalResult_pBox);
finalResult_panel.Controls.Add(finalResult_itemName_label);
result_flowLayoutPanel.Controls.Add(finalResult_panel);
为什么会发生这种情况,我该如何解决这个问题?
答
只要你保持Label.AutoSize = true
,这是默认值,它应该自动调整自己。
您可能需要做一些测试,看看实际尺寸,像
- 设置
BorderStyle
- 或
BackColor
或插入的文本的空间,所以它得到一个机会去第二行..
当然你可能衡量文本(例如
TextRenderer.MeasureText(text, Label.Font);
但是对于文本来说这肯定不是必需的。但它对于要求更高的布局控制很有用。
所以第一件事情就是要确保AutoSize
或真或您衡量并设置Label
的Size
..
@BillWoodger现在我没发现它为什么只显示一部分价值,因为它的规模不够大。现在的问题是,我如何将大小设置为与文本一样大?即时编辑我的问题 – 2015-04-04 13:54:54
@BillWoodger我编辑了这个问题。 – 2015-04-04 13:59:50
'finalResult_panel'是否足够显示全文? – TaW 2015-04-04 14:01:30