2015-04-04 164 views
1

动态创建标签时,缺少一部分文本。这是因为标签的大小不够宽,它会切割实际字符串的一部分。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); 

为什么会发生这种情况,我该如何解决这个问题?

+0

@BillWoodger现在我没发现它为什么只显示一部分价值,因为它的规模不够大。现在的问题是,我如何将大小设置为与文本一样大?即时编辑我的问题 – 2015-04-04 13:54:54

+0

@BillWoodger我编辑了这个问题。 – 2015-04-04 13:59:50

+0

'finalResult_panel'是否足够显示全文? – TaW 2015-04-04 14:01:30

回答

3

只要你保持Label.AutoSize = true,这是默认值,它应该自动调整自己。

您可能需要做一些测试,看看实际尺寸,像

  • 设置BorderStyle
  • BackColor
  • 或插入的文本的空间,所以它得到一个机会去第二行..

  • 当然你可能衡量文本(例如TextRenderer.MeasureText(text, Label.Font);但是对于文本来说这肯定不是必需的。但它对于要求更高的布局控制很有用。

所以第一件事情就是要确保AutoSize或真或您衡量并设置LabelSize ..