Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Come fare la stampa del testo in Richtextbox
Forum - C# / VB.NET - Come fare la stampa del testo in Richtextbox

Avatar
Cross (Normal User)
Pro


Messaggi: 61
Iscritto: 06/05/2007

Segnala al moderatore
Postato alle 17:24
Mercoledì, 11/07/2007
raga ho un piccolo problema con gli elementi di stampa che ho inserito nel mio programma (diciamo che è un editor di testi, simile al blocco note di windows)e questi elementi sono: il printdocument, il pagesetupdialog, il printdialog, e il printpreviewdialog.
ho provato nei pochi modi che conoscevo ma non sono riuscito a niente, sono riuscito ad aprire il printpreviewdialog ma non mi faceva vedere il testo scritto come anteprima 8questo è un esempio delle mie prove).
e quindi vi chiedo gentilmente di potermi aiutare a scrivere il codice di questi elementi negli appositi pulsanti per la stampa.
grazie molte.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:20
Giovedì, 12/07/2007
Io penso che, siccome la classe PrintDocument riceve l'input da uno StreamReader, il documento finale stampato abbia tutti i tag rtb del caso e non solo il testo formattato, e comunque dovresti scrivere un bel po' di codice sulla gestione grafica del testo.
Io ti suggerire invece di provare con un più semplice:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim P As New Process
  2. P.StartInfo.FileName = <nome file>
  3. P.StartInfo.Verb = "Print"
  4. P.Start()


PM Quote
Avatar
Cross (Normal User)
Pro


Messaggi: 61
Iscritto: 06/05/2007

Segnala al moderatore
Postato alle 17:24
Giovedì, 12/07/2007
mettendo questo codice mi fa un errore: Win32Exception non è stata gestita
come fare???

P.S.: a,il codice è per VB.NET, io nel VB.NET l'ho provato

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:16
Giovedì, 12/07/2007
A me non da' nessun errore. Ha sempre funzionato così. Comunque sì, il codice è vb.net, si vede, ma perchè? Lo volevi in c#?

PM Quote
Avatar
Cross (Normal User)
Pro


Messaggi: 61
Iscritto: 06/05/2007

Segnala al moderatore
Postato alle 20:30
Giovedì, 12/07/2007
no era una precisazione che il codice che volevo io doveva essere per VB.NET, ma a me continua a darmi errore.
non cè qualche altro metodo???

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:46
Venerdì, 13/07/2007
A dir la verità sì, non l'ho mai usato perchè è davvero lungo. Consiste nel prendere le impostazioni dal print dialog, e poi mediante printdocument grare una nuova graphic che disegni a una a una le righe di testo del file, tenendo conto dei margini ecc... Tuttavia ho visto questo metodo applicato solo per file di testo senza formattazione. Vuoi che te lo posti così ci provi?

PM Quote
Avatar
Cross (Normal User)
Pro


Messaggi: 61
Iscritto: 06/05/2007

Segnala al moderatore
Postato alle 15:11
Venerdì, 13/07/2007
si dai.
fammi questo favore, grazie

PM Quote
Avatar
Arcadia (Normal User)
Rookie


Messaggi: 21
Iscritto: 16/07/2007

Segnala al moderatore
Postato alle 17:41
Lunedì, 16/07/2007
Ciao,ho avuto anch'io lo stesso problema pochi giorni fa e sono riuscito a risolverlo con la richtexboxprintctrl
Trovi un interessante ed esaustivo articolo qui: http://support.microsoft.com/kb/812425/it
(Ci sono riuscito io che sono neofita.)
;)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:13
Martedì, 17/07/2007
Penso che potresti usare quello, eventualmente usando un traduttore c#-vb.net. Comunque il codice che ti dicevo è questo:
Codice sorgente - presumibilmente VB.NET

  1. Imports System.Drawing.Printing
  2. '...
  3. Public strFileName As String = "File da stampare"
  4. Public objStream As StreamReader
  5. Public objPrintFont As Font
  6. '...
  7. 'Evento 'inizia stampa', ad esempio click su un pulsante
  8. Dim objPrintDoc As New PrintDocument()
  9. Dim P As New PrintDialog()
  10. objPrintDoc.DocumentName = "Nome File"
  11. P.Document = objPrintDoc
  12. If P.ShowDialog = DialogResult.OK Then
  13.   objStream = New StreamReader(strFileName)
  14.   objPrintFont = New Font("Nome", <dimensione>)
  15.   AddHandler objPrintDoc.PrintPage, AddressOf objPrintDoc_PrintPage
  16.   objPrintDoc.PrinterSettings = P.PrinterSettings
  17.   objPrintDoc.Print()
  18.   objStream.Close()
  19. End If
  20. '...
  21. Private Sub objPrintDoc_PrintPage(sender As Object, e As PrintEventArgs)
  22.   Dim LinesPerPage As Single = 0
  23.   Dim VerticalPos As Single = 0
  24.   Dim LineCount As Int32 = 0
  25.   Dim LeftMargin As Single = e.MarginBounds.Left
  26.   Dim TopMargin As Single = e.MarginBouns.Top
  27.   Dim Line As string
  28.  
  29.   LinesPerPage = e.MarginBounds.Height / objPrintFont.GetHeight(e.Graphics)
  30.   Line = objStream.ReadLine()
  31.   While LineCount < LinesPerPage And Line <> Nothing
  32.     VerticalPos = Topmargin + (LineCount * objPrintFont.GetHeight(e.Graphics))
  33.     e.Graphics.DrawString(line, objPrintFont, Brushes.Black, LeftMargin, VerticalPos, New StringFormat())
  34.     LineCount += 1
  35.     If LineCount < LinesPerPage Then
  36.       Line = objStream.ReadLine()
  37.     End If
  38.   End While
  39. End Sub


PM Quote