我有网格数组,我想在他的单元格文本框中打印所有grid.each网格
网格设置为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");
}
}
但结果是只打印了第一页没有border / gridLines而另一页仍打印了border / gridLines
答案 0 :(得分:1)
第一个问题是,两次调用this.DeleteBorder()
毫无意义。
其次,假设gridArray
只有Grid
个;你不需要为每个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上重新创建问题。