powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Событие печати документа...
20 сообщений из 20, страница 1 из 1
Событие печати документа...
    #32847752
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу найти событие, которое срабатывало бы на нажатие в CrystalReportViewer1 на эконку с принтером, а еще лучше на непосредственно печать. Все события, кот я перепробовала не срабатывают.
Это событие нужно для пометки в базе, что данный документ был распечатан.
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848049
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то я такое уже видел... сейчас начнется:))
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848061
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не поняла...
где видел и что начнется...
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848216
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irinkaНе могу найти событие, которое срабатывало бы на нажатие в CrystalReportViewer1 на эконку с принтером, а еще лучше на непосредственно печать. Все события, кот я перепробовала не срабатывают.
Это событие нужно для пометки в базе, что данный документ был распечатан . Мне кажется, что вы подходите не с той стороны. Нажатие на кнопку "с принтером" означает лишь, что нажали на кнопку "с принтером".
Документ вполне мог и не напечататься по разным причинам.
Мне кажется, вам надо посмотреть на мониторинг статуса принтера и его задач (jobs)
Возможно, CR предоставляет какую-то объектную модель для этого
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848346
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, согласна, что нажатие на кнопку недостаточно и хорошо бы проверить статус.
Нашла такой пример из вашей ссылки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Private Enum PrinterStatus
        PrinterIdle =  3 
        PrinterPrinting =  4 
        PrinterWarmingUp =  5 
        ' For more states see WMI docs.
    End Enum

    Private Function PrinterStatusToString(ByVal ps As PrinterStatus) As String
        Dim s As String
        Select Case ps
            Case PrinterStatus.PrinterIdle
                s = "waiting (idle)"
            Case PrinterStatus.PrinterPrinting
                s = "printing"
            Case PrinterStatus.PrinterWarmingUp
                s = "warming up"
            Case Else   ' Vielleicht gibt es noch weitere Fälle...
                s = "unknown state"
        End Select
        PrinterStatusToString = s
    End Function

Private Sub Form1_Load( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs _
) Handles MyBase.Load
    Dim strPrintServer As String
    strPrintServer = "localhost"
    Dim WMIObject As String, PrinterSet As Object, Printer As Object
    WMIObject = "winmgmts://" & strPrintServer
    PrinterSet = GetObject(WMIObject).InstancesOf("win32_Printer")
    For Each Printer In PrinterSet
        MsgBox( _
            Printer.Name & ":  " & _
            PrinterStatusToString(Printer.PrinterStatus) _
        )
    Next Printer
End Sub

Вообщем он понятен, но опять же, в данном случае статус проверяется при загрузке формы, и остается вопрос в каком событии написать, то, что в примере написано в Load, чтобы вызвать эту самую проверку.
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848357
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшое пояснение...
Дело в том, чтобы перехватить событие, например, нажатия кнопки Del на клаве я использовала вот что:
Код: plaintext
1.
2.
3.
4.
5.
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
        If keyData =  131089  Then
        ля ля ля    
        End If
    End Function
Расчитывала, что есть что-то подобное для печати...
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848409
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все дело в том, что нет события "окончание печати документа". Просто потому, что OS грубо говоря посылает документы "в никуда" (на принтер). Далее они обрабатываются и печатаются принтером, у которого возможно только спросить "что он сейчас делает", т.е. узнать статус.

П.э. на ваш вопрос в каком событии написать, то, что в примере написано в Load, чтобы вызвать эту самую проверку. отвечу так:

Я бы по таймеру (возможно в отдельном треде) отслеживал статус принтера и его задач.

Хотя, сказать по правде, я не думаю что удастся написать 100% надежный механизм, который бы гарантировано подтверждал, что такой-то документ был _напечатан_ (а не послан на печать)
Даже сама OS (окно printers) частенько сбоит в этом вопросе.

В .net есть еще событие PrintDocument.EndPrint (для работы с PrintDocument) Но и оно говорит лишь о том, что последняя страница документа ушла на печать.
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848450
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
П.э. на ваш вопрос в каком событии написать, то, что в примере написано в Load, чтобы вызвать эту самую проверку. отвечу так:

Я бы по таймеру (возможно в отдельном треде) отслеживал статус принтера и его задач.

А если в этот момент кто-то еще печатает на этот принтере???
Получается нужно проверять кто и каким приложением печатает документ...так я понимаю
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848463
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А событие, что мы отправили документ "в никуда", можно перехватить?
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848481
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может вам в БД заносить статус вроде этого: "документ был отправлен на печать". Вы будете знать, что кто то пытался его напечатать, но не будет 100%, что это получилось(бумага кончалась, свет погас и етк). А статус будет выставляться по проверке клика на вашу пентограмму печати.
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848497
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приехали...
Дело в том, что явного события нажатия на пиктограмму нету, в этом первоначально и состоял вопрос (не могу найти событие нажатие на пиктограмму)
Может вы подскажите где оно?
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848512
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irinkaПриехали...
Дело в том, что явного события нажатия на пиктограмму нету, в этом первоначально и состоял вопрос (не могу найти событие нажатие на пиктограмму)
Может вы подскажите где оно? Нету такого события.
Можно создать свою кнопку "печать" и вызывать метод
CrystalReportViewer1.PrintReport по клику ней с запоминанием всего что хотите в БД.
...
Рейтинг: 0 / 0
Событие печати документа...
    #32848533
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за содействие и за ссылку (она мне еще пригодится) :)
К сожалению склоняюсь к этому же решению (создать свою кнопку)
...
Рейтинг: 0 / 0
Событие печати документа...
    #32849748
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По клику кнопки вызовется диалоговое окно, где можно нажать ОК, а можно Отмена.
не могу сообразить как сделать проверку - что нажато, т е например как в таком варианте:
Код: plaintext
1.
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
а как для CrystalReportViewer1.PrintReport()?
...
Рейтинг: 0 / 0
Событие печати документа...
    #32849770
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/127742&hl=dialogresult#1010101
И весь тот тред тоже полезен
...
Рейтинг: 0 / 0
Событие печати документа...
    #32859139
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, возможно, за глупый вопрос, но я немного не поняла...
Еще раз... Есть кнопка Button1, на которой висит такой обработчик:
CrystalReportViewer1.PrintReport()
Нажав на эту кнопку появится диалогое окно "Печать"
Пользователь может нажать Ок (тогда по хорошему пойдет печать) и Отмена (тогда окно закроется)

Внимательно просмотрела ссылку про DialogResult.
Т е нажатие на кнопку ОК пользователем в окне "Печать" можно можно перехватить с посомощью Button1.DialogResult=DialogResult.OK? или как
...
Рейтинг: 0 / 0
Событие печати документа...
    #32859217
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irinkaПрошу прощения, возможно, за глупый вопрос, но я немного не поняла...
Еще раз... Есть кнопка Button1, на которой висит такой обработчик:
CrystalReportViewer1.PrintReport()
Нажав на эту кнопку появится диалогое окно "Печать"
Пользователь может нажать Ок (тогда по хорошему пойдет печать) и Отмена (тогда окно закроется)

Внимательно просмотрела ссылку про DialogResult.
Т е нажатие на кнопку ОК пользователем в окне "Печать" можно можно перехватить с посомощью Button1.DialogResult=DialogResult.OK? или как Я невнимательно прочел ваш предыдущий вопрос.
Мне кажется, что перехватить результат выбора из стандартного Print Dialog, показанного из метода PrintReport нельзя.
Т.е. вам придется предположить, что раз на вашу кнопку нажали, то попытка печати была.
...
Рейтинг: 0 / 0
Событие печати документа...
    #32859233
irinka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, понятно...
Получается тогда так:
1. либо как сказали Вы "Т.е. вам придется предположить, что раз на вашу кнопку нажали, то попытка печати была."
2. либо создать свое диалоговое окно с парамерами печати

Мда не густо... :(
...
Рейтинг: 0 / 0
Событие печати документа...
    #32859265
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irinkaСпасибо, понятно...
Получается тогда так:
1. либо как сказали Вы "Т.е. вам придется предположить, что раз на вашу кнопку нажали, то попытка печати была."
2. либо создать свое диалоговое окно с парамерами печати

Мда не густо... :( 2 - окно то вы сделаете, а печатать как ? Все равно придется вызвать метод PrintReport, который покажет стандартное окно.

PS: в "старых" версиях CR, в ActiveX контроле была возможность не показывать диалог печати, а печатать сразу на принтер по умолчанию. Здесь этого нет
...
Рейтинг: 0 / 0
Событие печати документа...
    #32897654
baike2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Событие печати документа...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]