c#自动更改窗口大小

时间:2014-05-16 18:27:44

标签: c# winforms

我是一名从事Windows窗体应用程序的学生。在这个应用程序中,我有一个表单,如弹出窗口,显示标签。我想根据标签的大小更改窗口的大小。例如,如果标签有3行,则应自动显示所有行。但是现在它只显示一行。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您需要使用弹出窗体中标签的字体设置来计算文本的大小。以下是弹出窗体Load事件的示例:

    private void Popup_Load(object sender, EventArgs e)
    {
        messageLabel.Text = TextToShow;

        Graphics gfx = this.CreateGraphics();
        SizeF textSize = gfx.MeasureString(messageLabel.Text, messageLabel.Font);

        Size borders = this.Size - this.ClientSize;

        this.Size = new Size((int)textSize.Width, (int)textSize.Height) + borders;            
    }

此代码假设您有一个名为TextToShow的属性,用于传递要显示在表单中的消息:

        public string TextToShow { get; set; }

您可以像这样打开弹出窗体:

        Popup popup = new Popup();
        popup.TextToShow = "Test\nMult-line popup window\n\nLine4\n\nLine 6";

        popup.ShowDialog(this);

弹出窗体将缩放到标签的大小。尝试调整字体,更改文本等 - 应该正常工作。

希望这有帮助!

相关问题