You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#:如何调整Form窗口尺寸以适配Label中的长文本

嘿,这事儿不难!要让你的Form像MessageBox那样自动适配长文本,咱们可以用WPF的布局特性轻松搞定,下面是具体步骤和代码:

核心思路

咱们要让窗口自动跟着内容大小调整,同时让长文本在Label里自动换行,避免超出显示范围。

具体实现步骤
  1. 设置窗口自动适配:给Window加上SizeToContent="WidthAndHeight",这样窗口会根据内部控件的实际大小自动调整宽高。
  2. 配置Message Label:开启文本换行,同时限制最大宽度,避免窗口太宽影响观感。
  3. 合理布局控件:用StackPanel或Grid排版,加上合适的间距,让界面和MessageBox一样规整。
完整代码示例

XAML部分

<Window x:Class="YourApp.CustomMessageBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="提示" SizeToContent="WidthAndHeight"
        MaxWidth="800" <!-- 限制窗口最大宽度,防止文本过长撑得太宽 -->
        WindowStartupLocation="CenterScreen"
        ResizeMode="NoResize"> <!-- 可选:禁止用户调整窗口大小,更贴近MessageBox -->
    <Border Padding="18" Background="White">
        <StackPanel>
            <!-- Caption标题Label -->
            <Label x:Name="CaptionLabel" FontSize="14" FontWeight="Bold" Margin="0 0 0 12"/>
            <!-- Message内容Label -->
            <Label x:Name="MessageLabel" TextWrapping="Wrap" MaxWidth="760" Margin="0 0 0 20"/>
            <!-- OK按钮 -->
            <Button x:Name="OkBtn" Content="确定" Width="90" HorizontalAlignment="Right"
                    Click="OkBtn_Click"/>
        </StackPanel>
    </Border>
</Window>

C#后台代码

public partial class CustomMessageBox : Window
{
    public CustomMessageBox(string caption, string message)
    {
        InitializeComponent();
        // 传入标题和内容
        CaptionLabel.Content = caption;
        MessageLabel.Content = message;
    }

    private void OkBtn_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }
}
使用方式

你可以像调用MessageBox一样弹出这个窗口:

var msgBox = new CustomMessageBox("提示", "Cable News Network is an American basic cable and satellite television news channel owned by the Turner Broadcasting System, a division of Time Warner. CNN was founded in 1980 by American media proprietor Ted Turner as a 24-hour cable news channe");
msgBox.ShowDialog();

这样一来,不管你的文本多长,窗口都会自动调整大小,让内容完整显示,和MessageBox的效果一模一样!

内容的提问来源于stack exchange,提问作者Deet Glol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:32:03