Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > отправить RichTextBox.Text в PrintDialog


Автор: IrinaProkopcova 7.2.2006, 12:00
smile Помогите, пожалуйста, как отправить RichTextBox.Text в PrintDialog? Спасибо!

Автор: Exception 12.2.2006, 19:07
Это несколько затруднительно, потому в коде использован контрол RichTextBoxEx.
В архиве лежит контрол и тестовая программка для работы с ним.
Почитать о нем можно здесь (если есть MSDN):
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEV.v10.en/dnwinforms/html/wnf_RichTextBox.htm

Автор: IrinaProkopcova 13.2.2006, 09:32
smile Спасибо, большое, за внимание! Я тоже решила эту проблему, правда может не очень красиво, но все-же.
' Подключаю файл
Код

    Private Sub mnuPrewievs_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuPrewievs.Click
        Dim strS As String
        Dim strD As String
        Dim nType As Integer = FreeFile()
        Dim MyFile As StreamReader
        frmReportTitul.Show()
        frmReportTitul.MdiParent = Me
        frmReportTitul.ReportTitul.LoadFile(dlgOpen.FileName, _
        RichTextBoxStreamType.RichText)
    End Sub   
' Формирую страницу печати
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim strD As String
        Dim strV As String ' для считывания одной строчки 
        Dim chL As String ' для считывания одногосимвола
        Dim Cou As Integer = 1 ' счетчик для строки
        Dim intCounter As Integer ' счетчик по RichTextBox.Text
        strV = frmReportTitul.ReportTitul.Text
        For intCounter = 1 To 88 ' Универсально для самого маленького шрифта на один лист
            Do
                If chL <> Chr(10) And chL <> Chr(13) And chL <> "" Then
                    strD = strD & chL
                End If
                chL = Mid(strV, Cou, 1)
                Cou += 1
            Loop While chL <> Chr(10) And Cou < Len(strV)
            If chL = "" Then
                Exit For
            End If
            frmReportTitul.ReportTitul.Find(strD) ' Ищу строку, чтобы считать шрифт SelectionFont
            'Оператор для формирования графического объекта
            e.Graphics.DrawString(strD, frmReportTitul.ReportTitul.SelectionFont(), Brushes.Black, 0, (intCounter - 1) * 18)' *18 - приблизительный интервал между строками
            strD = ""
        Next
    End Sub
'Печатаю
    Private Sub mnuPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuPrint.Click
        PrintDocument1.Print()
    End Sub

Простенько, но работает.
smile P.S. примеры почему-то не открываются.

Автор: Exception 13.2.2006, 10:02
Так он вроде как не печатает картинки. Мой вариант более универсальный smile

Автор: IrinaProkopcova 13.2.2006, 11:24
smile Не открыть никак, с удовольствием-бы почитала!
Добавлено @ 11:34
smile Поняла в чем дело! У Вас наверно Studio.Net 2005? А у меня 2003 и ругается на меня жутко. Жду скоро должны прислать. Тогда посмотрю. Спасибо!

Автор: Exception 13.2.2006, 12:01
Угу. Она самая. Это из MSDN January 2005 Release For Visual Studio 2005 статейка, видимо в более ранних его нет.

Автор: IrinaProkopcova 13.2.2006, 14:26
smile А тогда такой вопрос: 2005 по-интересней чем 2003, или особой разницы нет? И смогу я свой проект начатый на 2003 дописывать на 2005?

Автор: Exception 13.2.2006, 14:36
Об особенностях Visual Studio 2005 можно почитать по ссылке вверху страницы (в шапке форума). Мне куда больше нравится smile . Насчет примеров - домой приду, скину для 2002 студии.

Автор: Exception 13.2.2006, 21:22
Архив для 2002-й студии.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)