Изменять размер формы в зависимости от текста в Label

329
09 марта 2017, 20:47

Есть форма, на ней лежит Label. Текст, помещаемый в Label, может состоять из пары предложений, а может содержать в себе многострочный список. Форма представляет собой всплывающее окошко возле трея, небольшого размера, это некие уведомления для юзера. Соответственно может возникнуть ситуация, когда текст в метке не помещается на форме. Отмечу, что текст находится в контейнере TableLayout. Как сделать так, чтобы размер формы, а именно высота, зависела от текста в метке, а именно признака, что весь текст виден на экране?

Можно ли сделать что-то вроде этого? Считаем размер формы до её показа:

while(метка показана не вся)
{
this.height++;
}

Использовать скролл в этой форме считаю некрасивым решением, лучше именно увеличить высоту формы.

Answer 1

что-то вроде такого:

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 пикселей на кнопки 
Answer 2

Я не знаю, как измерить сам размер, но вполне возможно найти зависимость ширины от количества символов. Допустим, ваш label - это label1:

void label1_TextChanged(object sender, EventArgs e){
  if(label1.Text.Length > какая-то величина){
this.height += 15; //Изменение может быть больше в зависимости от размера шрифта
 }
}
Answer 3

Кому интересно, решил проблему так:

// подгоняем высоту формы  
// требуемая высота для метки              
                    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;
                    }
READ ALSO
Как отключить сброс высоты скроллинга ScrollViewer в TreeView при удалении TreeViewItem?

Как отключить сброс высоты скроллинга ScrollViewer в TreeView при удалении TreeViewItem?

Есть TreeView, у него задано свойство ScrollViewerVerticalScrollBarVisibility="Auto"

276
UWP проблемы с миграцией EF6 SQLite

UWP проблемы с миграцией EF6 SQLite

При попытке Add-Migration InitialMigration падает исключение SystemDllNotFoundException, не может найти sqlite3

254
Microsoft.Office.Interop.Word как установить

Microsoft.Office.Interop.Word как установить

Установлена 13 студия максимальная, хочу добавить в проект ссылку на пакет MicrosoftOffice

252