gpt4 book ai didi

c# - 打印没有 GridLines 的 WPF 网格

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:50 24 4
gpt4 key购买 nike

我有网格数组,我想打印所有网格。每个网格都在他的单元格文本框中网格设置为 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");
}
}

但结果是只有第一页打印没有边框/网格线,而另一页仍然打印有边框/网格线

最佳答案

第一个问题是,两次调用 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 上重现该问题。 .

关于c# - 打印没有 GridLines 的 WPF 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com