2015-09-08 3 views
0

Привет, ребята, я искал эту помощь в течение нескольких недель и не получил ответа здесь Я иду ... У меня есть datagridview, этот DGV имеет ColumnCheckBox с именем («print») и другие 3 столбца (число, описание, цена) Когда я выбираю строку, щелкая в столбце ColumnCheckBox («Печать»), я хочу получить значение строки из этих 3 столбцов, упомянутых. и нажав на кнопке печати будет напечатано каждое из них только выбранная строка! ребята, все мои поиски запускаются для создания массива и после печати из массива, но я не знаю, как это сделать!Как распечатать одну строку DataGridView

каждый ответ будет опробован и оценен

+0

оба на первом в том, как получить значение из выбранной строки и установлен в массив или список, и после того, как сделать цикл на всех полученных значениях и распечатать их! –

ответ

1

Таким образом, вы можете найти строку с помощью некоторых критериев, например, вы можете найти свой первый проверили ряд:

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

Hi Reza Aghaei ваш код был слишком полезен для моего проекта! спасибо человеку! но мне все еще нужно закончить с другими критериями! Я сделаю новый вопрос и пометю вас там или отправлю ссылку здесь! thankx man! –

+0

Посмотрите, был ли ответ проголосован! я заметил, что мне нужно, чтобы у меня был рейтинг репутации, чтобы мой голос был открытым! я думаю! Кстати, у вас есть какой-то контакт по электронной почте? –

+0

спасибо мужчине снова, вот и я! –

Смежные вопросы