动态创建标签时,其中一部分文字丢失。这是因为标签的大小不够宽,它会削减实际字符串的一部分。
我如何让它完全停止?我不想也不记得为标签设置尺寸。它不应该只是继续直到字符串是空的吗?
示例:value ="狂战士的铁斧",它只显示" Berserker的铁",因为我没有任何尺寸设定它的一部分字符串。
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);
为什么会发生这种情况?我该如何解决这个问题?
答案 0 :(得分:3)
只要您保留Label.AutoSize = true
,这是默认值,它应自动调整大小。
您可能需要进行一些测试以查看实际尺寸,例如
BorderStyle
BackColor
或在文字中插入一个空格,这样就有机会进入第二行..
当然你可以测量文本(例如TextRenderer.MeasureText(text, Label.Font);
但是对于文本来说肯定不需要显示..它对于更苛刻的布局很有用但是,控制。
首先要确保AutoSize
为真,或者您衡量并设置Size
的{{1}} ..