2016-10-04 18 views
1

WPFテキストボックスのテキストの書式設定に関するサイトにはいくつかの質問がありますが、この問題は小さなコンピュータでのみ発生します。既に同様の質問がある場合は、私にそれを指摘してください!動的に作成されたTextBoxでのWPFテキスト書式設定の問題

リソースの使用状況を取得し、リモートサーバーで診断/回復タスクを実行するために使用するWPFアプリケーションがあります。コマンドが実行されると、c#にテキストボックスが作成され、結果の出力が表示されます。ほとんどのコンピュータでは、テキストがうまく印刷されます。しかし、少数のコンピュータとVDIチームでは、出力が境界線に達して出力の最後の列が切り捨てられるようです(スクリーンショット参照)。

Normal output on success

Output seems to hit a boundary that doesn't occur on most computers

テキストボックスを含むのTabItemと子供を作成するためのC#:適用されるスタイルと親のTabControlを示す

 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バージョンがインストールされていません。これは絶対に私を狂ってしまう。これをできるだけ短く保つことを願って私は上記のコードを省略しました。私は無関係だと思っていましたが、必要であれば喜んで投稿します。どんな助けや指導も大歓迎です!

+0

リモートコンピュータからの出力がラッピングが発生していない場所であることを確認しましたか?あなたがpowershellを使っていて、可能性を排除するために、このようなことを考えていたのですか?https://greiginsydney.com/viewing-truncated-powershell-output/ – rmc00

+0

ビデオカードのドライバの問題ですか? – auburg

+0

「プリントアウト」と言ったら、「画面に表示する」という意味ですか? –

答えて

0

時には、PowerShellは、表示されているものと非常によく似た出力を切り捨てます。あなたはそれを修正することができます一つの方法は、パイプに、このような幅を設定するには、アウト文字列によるコマンドの出力である:あなたのシナリオに応じて

your-command | out-string -Width 160 

を、PowerShellの出力の書式設定を制御する他の方法があります。 https://greiginsydney.com/viewing-truncated-powershell-output/

関連する問題