2011-10-27 18 views
2

グリッド配列があり、グリッドグリッドをすべて印刷したい場合は グリッドがShowGridLines = false;に設定されています。また、テキストボックスの境界線を削除するメソッドがあります。GridLineなしでWPFグリッドを印刷

private void DeletBorder() 
{ 
    Thickness bor = new Thickness(0.0); 
    for (int i = 0; i < this.gridArray.Length; i++) 
    { 
     foreach (Control ctrl in this.gridArray[i].Children) 
     { 
      if (ctrl.GetType() == typeof(TextBox)) 
      { 
       ((TextBox) ctrl).BorderThickness = bor; 
      } 
     } 
    } 
} 

私はこの方法では、アレイ内のすべてのグリッドを印刷しようとしています:

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    if (this.comboBox1.SelectedIndex > -1) 
    { 
     PrintDialog printDlg = new PrintDialog(); 
     this.DeletBorder(); 
     if (printDlg.ShowDialog() == true) 
     { 
      this.DeletBorder(); 
      foreach (Grid item in this.gridArray) 
      { 
       printDlg.PrintVisual(item, "Stiker Print Job"); 
      } 
     } 
    } 
    else 
    { 
     MessageBox.Show("you must select the page layout first"); 
    } 
} 

が、結果は最初のページのみがボーダー/グリッド線なしで印刷されたが、他はまだ国境で印刷ということです/ gridLines

答えて

1

最初の問題は、this.DeleteBorder()を2回呼び出すことは意味がないことです。

第2に、gridArrayにはGridsが含まれていると仮定します。

if (printDlg.ShowDialog() == true) 
{ 
    /* remove this--this.DeletBorder(); */ 

    int index = 0; 
    foreach(Grid item in this.gridArray) 
    { 
     item.ShowGridLines = false; 
     // Add an identifier so you know what job is printing. You may need to call: 
     // item.UpdateLayout(); 
     printDlg.PrintVisual(item, "Stiker Print Job: " + index.ToString()); 
    } 
} 

これで問題が解決しない場合は、http://gist.github.com上の問題を再現するために、いくつかのXAMLおよび/またはそれ以上のサンプルコードを提供してください:あなたは、各Grid.のための任意のグリッド線がこれを試してみてください表示されないようにする必要があります。

関連する問題