C#:如何调整Form窗口尺寸以适配Label中的长文本
嘿,这事儿不难!要让你的Form像MessageBox那样自动适配长文本,咱们可以用WPF的布局特性轻松搞定,下面是具体步骤和代码:
核心思路
咱们要让窗口自动跟着内容大小调整,同时让长文本在Label里自动换行,避免超出显示范围。
具体实现步骤
- 设置窗口自动适配:给Window加上
SizeToContent="WidthAndHeight",这样窗口会根据内部控件的实际大小自动调整宽高。 - 配置Message Label:开启文本换行,同时限制最大宽度,避免窗口太宽影响观感。
- 合理布局控件:用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
相关产品推荐
相关产品推荐

