如何打印单行DataGridView

本文关键字:单行 DataGridView 打印 何打印 | 更新日期: 2023-09-27 18:11:39

大家好,几个星期以来我一直在寻找这个帮助,但还没有得到答案我走了……我有一个datagridview,这个DGV有一个名为ColumnCheckBox("print")和其他3列(编号,描述,价格)当我通过单击ColumnCheckBox("打印")来选择一行时,我想从提到的这3列中获得行值。通过单击打印按钮,它将只打印所选行的每一行!伙计们,我所有的搜索都是为了创建一个数组,然后从数组中打印出来,但我不知道怎么做!

每个答案都会被尝试和欣赏

如何打印单行DataGridView

这样您就可以使用一些条件找到一行,例如您可以找到第一个选中的行:

var firstCheckedRow = this.myDataGridView.Rows.Cast<DataGridViewRow>()
                          .Where(row => (bool?)row.Cells["MyCheckBoxColumn"].Value == true)
                          .FirstOrDefault();

这样你可以得到一行中所有单元格的值,例如,你可以把主题放在不同行的字符串中:

var builder = new StringBuilder();
firstCheckedRow.Cells.Cast<DataGridViewCell>()
               .ToList().ForEach(cell =>
               {
                   builder.AppendLine(string.Format("{0}", cell.Value));
               });

然后你可以给他们看:

MessageBox.Show (builder.ToString ());

或者您甚至可以在表单上放置PrintDocument并处理PrintPage事件以将它们打印到打印机。你还应该在表单上放一个Button,在点击事件按钮时,调用PrintDocument1.Print();

代码:

private void Button1_Click(object sender, EventArgs e)
{
    PrintDocument1.Print();
}
PrintDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
    var firstCheckedRow = this.myDataGridView.Rows.Cast<DataGridViewRow>()
                              .Where(row => (bool?)row.Cells["MyCheckBoxColumn"].Value == true)
                              .FirstOrDefault();
    var builder = new StringBuilder();
    firstCheckedRow.Cells.Cast<DataGridViewCell>()
                   .ToList().ForEach(cell =>
                   {
                       builder.AppendLine(string.Format("{0}", cell.Value));
                   });
    e.Graphics.DrawString(builder.ToString(),
               this.myDataGridView.Font,
               new SolidBrush(this.myDataGridView.ForeColor),
               new RectangleF(0, 0, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
}