
asharky писал(а):Сформировал задание на печать, инициировал поток в котором оно будет выполняться, и пошел дальше. В фоне выполняется печать отчета. Выскакивает окно с количеством страниц и кнопкой Cancel. Как сделать так, чтобы глаза мои его не видели?
Имелось в виду как сделать так, чтобы это окно не показывалось вообще.Ramzes писал(а):asharky писал(а):Сформировал задание на печать, инициировал поток в котором оно будет выполняться, и пошел дальше. В фоне выполняется печать отчета. Выскакивает окно с количеством страниц и кнопкой Cancel. Как сделать так, чтобы глаза мои его не видели?
ну чтоб твои глаза его не видели, можно просто отворачиваться от монитора, или закрывать эти самые глаза
У меня да, вылезает. Как у других я не знаю.Viper писал(а):asharky, а оно разве по умолчанию при печати всегда вылезает?
Dim m_thread As Thread
m_thread = New Thread(AddressOf printNaklad)
m_thread.IsBackground = False
m_thread.Priority = ThreadPriority.Normal
m_thread.Start()
Private Sub printNaklad()
Dim p_dataset As New DataSet("Naklad")
.....
p_dataset.AcceptChanges()
Using m_TovNakl As cls_Naklad = New cls_Naklad(p_dataset)
m_TovNakl.Run()
End Using
'''<summary>Класс для распечатки накладной</summary>
Private Class cls_Naklad : Implements IDisposable
#Region "Локальные переменные"
'''<summary>Счетчик печатаемой страницы</summary>
Private c_currentPageIndex As Integer
'''<summary>Поток</summary>
Private c_streams As IList(Of Stream)
'''<summary>Данные для печати</summary>
Private c_dataset As DataSet
''' <summary>
''' Имя файла отчета
''' </summary>
''' <remarks></remarks>
Private Const CONST_STRING_REPORT_RDLC_NAME As String = "naklad.rdlc"
#End Region ' "Локальные переменные"
#Region "Конструкторы/деструкторы"
''' <summary>Стартовая процедура</summary>
Public Sub New(ByVal m_dataset As DataSet)
c_dataset = m_dataset.Copy
End Sub ' End New()
''' <summary>Процедура запуска приложения</summary>
Public Sub Run()
Dim report As LocalReport = New LocalReport()
report.ReportPath = CONST_STRING_REPORT_RDLC_NAME
For Each tblI As DataTable In c_dataset.Tables
report.DataSources.Add(New ReportDataSource(tblI.TableName, tblI))
Next
ExportImage(report)
'ExportPDF(report)
c_currentPageIndex = 0
Print()
End Sub ' End Run()
''' <summary>Процедура уничтожения объектов по окончанию работы программы</summary>
Private Overloads Sub Dispose() Implements IDisposable.Dispose
If Not (c_streams Is Nothing) Then ' Если потоки не завершены, то чистим их
Dim stream As Stream
For Each stream In c_streams
stream.Close() ' Закрытие потока
Next
c_streams = Nothing ' Очистка
End If
End Sub ' End Dispose()
#End Region ' End "Конструкторы/деструкторы"
#Region "Вспомогательные функции"
'''<summary>Создание потока</summary>
Private Function CreateStream(ByVal name As String, ByVal fileNameExtension As String, _
ByVal encoding As Encoding, ByVal mimeType As String, ByVal willSeek As Boolean) As Stream
Dim streamF As MemoryStream = New MemoryStream()
'Dim streamF As Stream = New FileStream("..\..\" + name + "." + fileNameExtension, FileMode.Create)
c_streams.Add(streamF) ' Добавление потока в массив
Return streamF
End Function ' End CreateStream()
''' <summary>Формирование потока графики</summary>
''' <remarks>Графический Формат файла</remarks>
Private Sub ExportImage(ByVal report As LocalReport)
Dim deviceInfo As String = "<DeviceInfo>" + _
" <OutputFormat>PNG</OutputFormat>" + _
" <DpiX>300</DpiX>" + _
" <DpiY>300</DpiY>" + _
" <Compress>100</Compress>" + _
" </DeviceInfo>"
Dim warnings() As Warning = Nothing
c_streams = New List(Of Stream)()
Try
report.Render("Image", deviceInfo, AddressOf CreateStream, warnings)
Catch ex As Exception
WLog("Ошибка в Class cls_Naklad.ExportImage. " & ex.InnerException.InnerException.Message, _
EventLogEntryType.Error)
End Try
Dim stream As Stream
For Each stream In c_streams
stream.Position = 0
Next
End Sub ' End ExportImage()
#End Region ' "Вспомогательные функции"
#Region "Процедуры печати"
''' <summary>Процедура вызывается по событию "Печать страницы"</summary>
Private Sub PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim pageImage As Drawing.Image = Nothing
Try
pageImage = New Metafile(c_streams(c_currentPageIndex))
WLog("Печать через MetaFile", EventLogEntryType.Information)
Catch ex As Exception
pageImage = New Drawing.Bitmap(c_streams(c_currentPageIndex))
WLog("Печать через BitMap", EventLogEntryType.Information)
End Try
ev.Graphics.DrawImage(pageImage, ev.PageBounds)
c_currentPageIndex += 1
ev.HasMorePages = (c_currentPageIndex < c_streams.Count)
End Sub ' End PrintPage()
''' <summary>Процедура вызывается перед печатью каждой страницы</summary>
Private Sub QueryPageSettings(ByVal sender As Object, ByVal ev As QueryPageSettingsEventArgs)
ev.PageSettings.Landscape = (ev.PageSettings.PrintableArea.Height > ev.PageSettings.PrintableArea.Width)
End Sub ' End QueryPageSettings()
''' <summary>Процедура печати</summary>
Private Sub Print()
If c_streams Is Nothing Or c_streams.Count = 0 Then Exit Sub
Dim printDoc As New PrintDocument()
printDoc.PrinterSettings.PrinterName = CONST_STRING_PRINTER_NAME
If Not printDoc.PrinterSettings.IsValid Then
Dim msg As String = String.Format("Не правильные параметры принтера ""{0}"".", CONST_STRING_PRINTER_NAME)
WLog(msg, EventLogEntryType.Error) ' Запись ошибки принтера в лог-файл
Exit Sub
End If
AddHandler printDoc.QueryPageSettings, AddressOf Me.QueryPageSettings
AddHandler printDoc.PrintPage, AddressOf Me.PrintPage
Try
printDoc.Print()
Catch ex As Exception
WLog("Ошибка печати накладной", EventLogEntryType.Error)
End Try
End Sub ' End Print()
#End Region ' "Процедуры печати"
End Class ' End Class cls_Naklad
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1