Как рассчитывается размер при использовании GetPreferredSize ()? - PullRequest
0 голосов
/ 01 апреля 2019

Я использую метку для отображения сообщения. Я рассчитал размер этикетки, используя метод GetPreferredSize(). Этот метод работает хорошо, когда я не делал никаких манипуляций с изменением размера этикетки. Но когда я уменьшаю ширину надписи, текст обрезается. Однако, если я добавлю новую строку (\n) в конец отображаемого текста, текст, который обрезается в предыдущем случае, отобразится в следующей строке.

Вот что я попробовал.

label1.Text = "Are you sure you wish to cancel? \n You will permanently discard any information you have entered!";
label1.Font = new Font(new FontFamily("Calibri"), 15); 
Size textSize = label1.GetPreferredSize(Size.Empty); //Works fine.
label1.Size = textSize;


textSize.Width -= 25;
label1.Size = textSize;// Text is clipped.

label1.Text = "Are you sure you wish to cancel? \n You will permanently discard any information you have entered! \n "; //Works fine again!

Обратитесь к изображению, Текст метки

Если метод вычисляет размер метки на основе содержимого, почему содержимое обрезается в case2 и работает хорошо в case3? Как соотносятся ширина и высота? Кто-нибудь может объяснить, что мне не хватает?

Спасибо

Sindhu

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

Измените настройку «Якорь», чтобы привязать только левую или правую

0 голосов
/ 01 апреля 2019
 Size sz = new Size(this.Width, Int32.MaxValue);
            sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
            this.Height = sz.Height;

где "это" - ваш контроль.

0 голосов
/ 01 апреля 2019

Насколько большим был размер текста до его уменьшения на 25?Может просто не хватит места и отрежут - попробуйте с другим номером.И ... ты конечно хотел вычесть, а не присвоить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...