C# 动态创建的文本框存在WPF文本格式问题
虽然网站上有一些关于在WPF文本框中设置文本格式的问题,但这个问题只发生在一小部分计算机上。如果已经有类似的问题,请告诉我 我有一个WPF应用程序,用于获取资源使用情况并在远程服务器上执行诊断/恢复任务。运行命令时,将在c#中创建一个文本框以显示结果输出。在大多数计算机上,文本打印得很好。然而,在少数计算机和VDI上,我的团队使用的输出似乎达到了极限,截断了我输出的最后一列(参见屏幕截图) c#用于创建选项卡项和子项,包括文本框:C# 动态创建的文本框存在WPF文本格式问题,c#,wpf,xaml,C#,Wpf,Xaml,虽然网站上有一些关于在WPF文本框中设置文本格式的问题,但这个问题只发生在一小部分计算机上。如果已经有类似的问题,请告诉我 我有一个WPF应用程序,用于获取资源使用情况并在远程服务器上执行诊断/恢复任务。运行命令时,将在c#中创建一个文本框以显示结果输出。在大多数计算机上,文本打印得很好。然而,在少数计算机和VDI上,我的团队使用的输出似乎达到了极限,截断了我输出的最后一列(参见屏幕截图) c#用于创建选项卡项和子项,包括文本框: TabItem currentButtonT
TabItem currentButtonTab = buttonTabControl.SelectedItem as TabItem;
TabItem resultsTab = new TabItem();
TextBox resultsTabText = new TextBox();
Grid resultsGrid = new Grid();
Grid tabLabelGrid = new Grid();
Button closeTabCmd = new Button();
DockPanel tabPanel = new DockPanel();
StackPanel tabLabelPanel = new StackPanel();
Label tabLabel = new Label();
resultsTabText.Style = (Style)Resources["txtStyle"];
//resultsTabText.Margin = new Thickness(5);
//resultsTabText.TextAlignment = TextAlignment.Left;
resultsTabText.SetValue(Grid.ColumnProperty, 0);
resultsTabText.SetValue(Grid.ColumnSpanProperty, 2);
resultsTabText.HorizontalAlignment = HorizontalAlignment.Stretch;
resultsTabText.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
resultsTabText.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
//resultsTabText.FontFamily = new FontFamily("Consolas");
resultsTabText.IsReadOnly = true;
resultsTabText.HorizontalContentAlignment = HorizontalAlignment.Stretch;
resultsTabText.MaxLines = 20;
resultsTabText.Tag = string.Format("resultsText");
tabPanel.Margin = new Thickness(0);
tabPanel.SetValue(Grid.ColumnProperty, 0);
tabPanel.SetValue(Grid.ColumnSpanProperty, 2);
tabPanel.HorizontalAlignment = HorizontalAlignment.Stretch;
tabPanel.VerticalAlignment = VerticalAlignment.Stretch;
resultsTab.Padding = new Thickness(5, 0, 5, 0);
resultsTab.Content = resultsGrid;
resultsTab.Header = tabLabelGrid;
resultsTab.Name = string.Format("resultTab{0}", currentTabCount + 1);
resultsTab.Style = (Style)Resources["TabItemTemplate"];
resultsTab.Focus();
closeTabCmd.Click += clearButton_Click;
closeTabCmd.Tag = resultsTab.Name;
closeTabCmd.Margin = new Thickness(0);
closeTabCmd.Padding = new Thickness(1, -3, 1, -2);
closeTabCmd.VerticalAlignment = VerticalAlignment.Center;
closeTabCmd.HorizontalAlignment = HorizontalAlignment.Right;
closeTabCmd.Content = "X";
closeTabCmd.Background = Brushes.WhiteSmoke;
closeTabCmd.Foreground = Brushes.Red;
tabLabelGrid.Margin = new Thickness(0,-5,0,-5);
tabLabelGrid.Children.Add(tabLabelPanel);
tabLabel.Content = computerName + "-" + buttonName;
tabLabel.Style = (Style)Resources["dynamicLabelStyle"];
tabLabelPanel.Margin = new Thickness(0);
tabLabelPanel.Orientation = Orientation.Horizontal;
tabLabelPanel.Children.Add(tabLabel);
tabLabelPanel.Children.Add(closeTabCmd);
resultsTabControl.SelectionChanged += ResultsTabControl_SelectionChanged;
resultsTabControl.Items.Add(resultsTab);
resultsGrid.Children.Add(tabPanel);
tabPanel.Children.Add(resultsTabText);
XAML显示应用的样式和父选项卡控件:
<Style x:Key="txtStyle" TargetType="{x:Type TextBox}">
<Setter Property="Margin" Value="5"/>
<Setter Property="Padding" Value="10,5"/>
<Setter Property="FontFamily" Value="Consolas"/>
<Setter Property="Foreground" Value="Black"/>
</Style>
...
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
...
<StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Button x:Name="copyButton" Style="{StaticResource closeTabButton}"
Click="copyCmd_Click" Content="Copy Current Text"/>
<Button x:Name="closeTabsCmd" Style="{StaticResource closeTabButton}"
Click="closeTabsCmd_Click" Content="Close All"/>
<Button x:Name="copyCmd" Margin="5" Padding="2" Click="copyCmd_Click" Content="Copy" Visibility="Collapsed"/>
</StackPanel>
<TabControl x:Name="resultsTabControl" Visibility="Collapsed" Style="{StaticResource resultsControl}"
ButtonBase.Click="clearButton_Click" SelectionChanged="ResultsTabControl_SelectionChanged">
<TabControl.Background>
<SolidColorBrush Color="#FFF9F9F9" Opacity="0.1"/>
</TabControl.Background>
</TabControl>
</StackPanel>
...
...
我已经确认,无论安装的是什么.NET版本,都会发生这种情况。这简直让我发疯。为了尽可能简短,我省略了上面的代码,我认为这些代码无关紧要,但如果需要的话,我很乐意发布更多。任何帮助或指导都将不胜感激 有时PowerShell会截断其输出,与您看到的非常相似。解决此问题的一种方法是通过管道将命令的输出穿过out字符串,以如下方式设置宽度:
your-command | out-string -Width 160
根据您的场景,还有其他方法可以控制powershell输出的格式设置。请参见有时PowerShell会截断其输出,与您看到的非常类似。解决此问题的一种方法是通过管道将命令的输出穿过out字符串,以如下方式设置宽度:
your-command | out-string -Width 160
根据您的场景,还有其他方法可以控制powershell输出的格式设置。请参见您是否检查了远程计算机的输出是否不在包装发生的位置?如果您使用powershell,我会考虑这样的问题,只是为了排除可能是视频卡驱动程序问题?所以当您说“打印输出”时,您的意思是“屏幕上显示”?这在@rmc00中起作用!你能把它写下来作为我的答案吗?我很高兴这是一个Powershell修复程序,因为脚本是从网络位置运行的,而不是与应用程序一起编译的,所以测试耗时2秒。您是否检查了远程计算机的输出是否不在进行包装的位置?如果您使用powershell,我会考虑这样的问题,只是为了排除可能是视频卡驱动程序问题?所以当您说“打印输出”时,您的意思是“屏幕上显示”?这在@rmc00中起作用!你能把它写下来作为我的答案吗?我很高兴这是一个Powershell修复程序,因为脚本是从网络位置运行的,而不是与应用程序一起编译,所以测试耗时2秒。