Вот что вам нужно сделать, это загрузить свой отчет и данные в средство просмотра отчетов, а затем отобразить страницы отчета в списке потоков памяти и распечатать их, используя здесь класс PrintDocument, как пример того, как это делается ссылка . Для части, где он спрашивает пользователя, не находит ли он смену принтера по умолчанию
if (!printDoc.PrinterSettings.IsValid)
{
throw new Exception("Error: cannot find the default printer.");
}
в методе Print()
с отображением PrintDialog для пользователя, чтобы выбрать принтер.