c#自动更改窗口大小

c#自动更改窗口大小,c#,winforms,C#,Winforms,我是一名学生,正在使用windows窗体应用程序。在这个应用程序中,我有一个类似弹出窗口的表单,显示标签。我想根据标签的大小更改窗口的大小。例如,如果标签有3行,则应自动显示所有行。但现在它只显示了一行。如何解决此问题?您需要使用弹出表单中标签的字体设置来计算文本大小。以下是弹出表单的Load事件示例: private void Popup_Load(object sender, EventArgs e) { messageLabel.Text = TextToS

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

您需要使用弹出表单中标签的字体设置来计算文本大小。以下是弹出表单的
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);
弹出表单将缩放到标签的大小。尝试调整字体、更改文本等-应能正常工作


希望这有帮助

这应该很有用:[Link]()您可以使用设计器中提供的标准属性执行此操作。将窗体的AutoSize属性设置为True,AutoSizeMode设置为GrowthandShrink。若要从标签中提取多个“行”,必须将其MaximumSize属性设置为(100,0),以便强制将文本换行。@eChanece欢迎使用堆栈溢出。在项目中实现解决方案时仍然存在问题。如果有,您可以在评论中询问您的查询?如果你已经解决了这个问题,那么把这个答案标记为接受。嗯,你的答案可能会有用。。。我相信它可以:p