我有一个网格数组,我想打印所有的网格。每个网格都在他的单元格文本框中网格设置为ShowGridLines = false;
,我也有一个方法来删除文本框的边界。
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,但其他仍然打印边框/gridLines
第一个问题是,两次调用this.DeleteBorder()
是没有意义的。
第二,假设gridArray
中只有Grid
s;你不需要为每个Grid.
显示任何网格线试试这个:
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());
}
}
如果这不能解决您的问题,请提供一些XAML和/或更多的示例代码来重新创建http://gist.github.com上的问题。