Есть форма, на ней лежит Label. Текст, помещаемый в Label, может состоять из пары предложений, а может содержать в себе многострочный список. Форма представляет собой всплывающее окошко возле трея, небольшого размера, это некие уведомления для юзера. Соответственно может возникнуть ситуация, когда текст в метке не помещается на форме. Отмечу, что текст находится в контейнере TableLayout. Как сделать так, чтобы размер формы, а именно высота, зависела от текста в метке, а именно признака, что весь текст виден на экране?
Можно ли сделать что-то вроде этого? Считаем размер формы до её показа:
while(метка показана не вся)
{
this.height++;
}
Использовать скролл в этой форме считаю некрасивым решением, лучше именно увеличить высоту формы.
что-то вроде такого:
lbl.WordWrap = true;
lbl.Text = "asldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasldkfj\r\nasdf"
MainForm.Height = lbl.Height + 100; //оставляемь 100 пикселей на кнопки
Я не знаю, как измерить сам размер, но вполне возможно найти зависимость ширины от количества символов. Допустим, ваш label - это label1:
void label1_TextChanged(object sender, EventArgs e){
if(label1.Text.Length > какая-то величина){
this.height += 15; //Изменение может быть больше в зависимости от размера шрифта
}
}
Кому интересно, решил проблему так:
// подгоняем высоту формы
// требуемая высота для метки
int pref_height = fTray.lMessage.GetPreferredSize(fTray.lMessage.Size).Height;
int cur_height = fTray.lMessage.Height;
int diff_height = pref_height - cur_height;
if (diff_height>0)
{
fTray.Height = fTray.Height + diff_height;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники