При динамическом создании метки отсутствует часть текста. Это связано с тем, что размер ярлыка недостаточно широк, он разрезает часть фактической строки.
Как я могу просто остановиться? Я не хочу и не помню, как установить размер метки. Должна ли она продолжаться до тех пор, пока строка не будет пустой?
Пример: value = "Berserker Iron Axe", он отображает только "Berserker Iron", потому что у меня нет размера, чтобы он сместил часть строки.
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
был либо прав, либо что вы измеряете и устанавливаете Size
Label
.