Изменение размера формы при изменении языка - PullRequest
0 голосов
/ 24 июня 2011

C # WinForms: представьте, что внутри красной и желтой панелей есть куча элементов управления. На самом деле они не должны быть панелями. Все, что вы предлагаете, в порядке. Требуемая функциональность: когда речь идет о английском языке, изменение размера - ОК, потому что форма выглядит так, как я ее разработал в дизайнере. когда там меняется язык, возникает проблема, потому что метка получает очень длинный текст в переведенном режиме, и он просто не соответствует желтому. Итак: (1) Мне нужна идея дизайна пользовательского интерфейса, что, когда метке требуется больше места, она автоматически изменяет размеры, а желтая область изменяет размеры и сдвигает красную область вправо, а также форма, конечно, изменяет размеры, чтобы показать все. 2) Я хочу, чтобы красная область увеличивалась, если я изменяю размер формы, поэтому я могу сделать это, закрепив красную область вправо, хорошо ... НО я не хочу, чтобы желтая область изменяла размеры, если я изменяю размер формы. Я только хочу, чтобы это изменило размер, когда содержанию в нем нужно больше места. 3) Я могу ошибаться, если я использовал TableLayout с двумя столбцами для красных и желтых областей и перевел столбцы в режим AutoSize, но это не решило проблему ....

что вы предлагаете?

enter image description here

1 Ответ

1 голос
/ 24 июня 2011

Лучший способ сделать это - создать класс, который наследует класс System.Forms.Controls.Button или Label. Переопределите событие TextChanged, затем в функции Paint используйте MeasureFont, чтобы измерить размер текста и соответственно изменить размер кнопки. Так что-то вроде этого:

public class MyButton : Button 
{
    protected override void OnPaint(PaintEventArgs pe)
    {
        Graphics g = pe.Graphics;

        SizeF stringSize = g.MeasureFont(this.Text, this.Font);

        this.Resize(SizeF.Width + 10, SizeF.Height + 10);
     }
}

Что-то в этом роде. Я не проверял это.

...