如何打印单行DataGridView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何打印单行DataGridView相关的知识,希望对你有一定的参考价值。

嗨,大家好,我一直在寻找这个帮助已经好几个星期了,我还没有得到答案我去了...我有一个datagridview,这个DGV有一个名为(“print”)的ColumnCheckBox和其他3列(Number,说明,价格)当我通过单击ColumnCheckBox(“打印”)选择一行时,我想从上面提到的这3列中获取行的值。并且通过单击打印按钮,它将打印每一行仅选中行!伙计们我的所有搜索运行创建一个数组并从阵列打印但我不知道如何!

每个答案都将受到审判和赞赏

答案

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

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));
}

以上是关于如何打印单行DataGridView的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript单行代码,也就是代码片段

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用

如何更改DataGridView行的背景颜色并在悬停时撤消?

如何在 vb.net 中打印带有标题的 datagridview 表?

如何在c#中只打印datagridview中的已检查行

在单行代码中使用 *(扩展运算符)打印列表列表