Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Stampa Richtextbox

    premetto che sono alle prime armi con VB 2008
    Incomincio col dire che ho già effettuato molte ricerche (sia su questo sito internet, che nel resto della rete, sia su msdn), ma non sono riuscito a trovare una soluzione al mio problema:
    come stampo il testo di una richtextbox?
    Nel mio programma ci sono già sia printdocument1, sia printdialog1.
    quello che vorrei fare io è questo:
    cliccare su un ToolStripDropDownButton1, che apre printdialog1, tramite il quale stampare il testo della richtextbox1 contenuta nel programma.
    Qualcuno di voi mi sa aiutare?


    grazie 1000 per il tempo dedicatomi.

    Stig

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non so cosa hai cercato...

    http://www.google.it/search?q=how+to...tbox+in+vb2008

    ad esempio:
    How to print the content of a RichTextBox control by using Visual Basic .NET or Visual Basic 2005
    http://support.microsoft.com/kb/811401/en-us


  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    77
    Option Explicit On

    Imports System
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Runtime.InteropServices
    Imports System.Drawing.Printing

    Namespace RichTextBoxPrintCtrl
    Public Class RichTextBoxPrintCtrl
    Inherits RichTextBox
    ' Convert the unit that is used by the .NET framework (1/100 inch)
    ' and the unit that is used by Win32 API calls (twips 1/1440 inch)
    Private Const AnInch As Double = 14.4

    <StructLayout(LayoutKind.Sequential)> _
    Private Structure RECT
    Public Left As Integer
    Public Top As Integer
    Public Right As Integer
    Public Bottom As Integer
    End Structure

    <StructLayout(LayoutKind.Sequential)> _
    Private Structure CHARRANGE
    Public cpMin As Integer ' First character of range (0 for start of doc)
    Public cpMax As Integer ' Last character of range (-1 for end of doc)
    End Structure

    <StructLayout(LayoutKind.Sequential)> _
    Private Structure FORMATRANGE
    Public hdc As IntPtr ' Actual DC to draw on
    Public hdcTarget As IntPtr ' Target DC for determining text formatting
    Public rc As Rect ' Region of the DC to draw to (in twips)
    Public rcPage As Rect ' Region of the whole DC (page size) (in twips)
    Public chrg As CHARRANGE ' Range of text to draw (see above declaration)
    End Structure

    Private Const WM_USER As Integer = &H400
    Private Const EM_FORMATRANGE As Integer = WM_USER + 57

    Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wp As IntPtr, ByVal lp As IntPtr) As IntPtr

    ' Render the contents of the RichTextBox for printing
    ' Return the last character printed + 1 (printing start from this point for next page)
    Public Function Print(ByVal charFrom As Integer, ByVal charTo As Integer, ByVal e As PrintPageEventArgs) As Integer

    ' Mark starting and ending character
    Dim cRange As CHARRANGE
    cRange.cpMin = charFrom
    cRange.cpMax = charTo

    ' Calculate the area to render and print
    Dim rectToPrint As RECT
    rectToPrint.Top = e.MarginBounds.Top * AnInch
    rectToPrint.Bottom = e.MarginBounds.Bottom * AnInch
    rectToPrint.Left = e.MarginBounds.Left * AnInch
    rectToPrint.Right = e.MarginBounds.Right * AnInch

    ' Calculate the size of the page
    Dim rectPage As RECT
    rectPage.Top = e.PageBounds.Top * AnInch
    rectPage.Bottom = e.PageBounds.Bottom * AnInch
    rectPage.Left = e.PageBounds.Left * AnInch
    rectPage.Right = e.PageBounds.Right * AnInch

    Dim hdc As IntPtr = e.Graphics.GetHdc()

    Dim fmtRange As FORMATRANGE
    fmtRange.chrg = cRange ' Indicate character from to character to
    fmtRange.hdc = hdc ' Use the same DC for measuring and rendering
    fmtRange.hdcTarget = hdc ' Point at printer hDC
    fmtRange.rc = rectToPrint ' Indicate the area on page to print
    fmtRange.rcPage = rectPage ' Indicate whole size of page

    Dim res As IntPtr = IntPtr.Zero

    Dim wparam As IntPtr = IntPtr.Zero
    wparam = New IntPtr(1)

    ' Move the pointer to the FORMATRANGE structure in memory
    Dim lparam As IntPtr = IntPtr.Zero
    lparam = Marshal.AllocCoTaskMem(Marshal.SizeOf(fmtRange))
    Marshal.StructureToPtr(fmtRange, lparam, False)

    ' Send the rendered data for printing
    res = SendMessage(Handle, EM_FORMATRANGE, wparam, lparam)

    ' Free the block of memory allocated
    Marshal.FreeCoTaskMem(lparam)

    ' Release the device context handle obtained by a previous call
    e.Graphics.ReleaseHdc(hdc)

    ' Return last + 1 character printer
    Return res.ToInt32()
    End Function

    End Class
    End Namespace

    ciao trovato in rete non e farina del mio sacco

  4. #4
    Originariamente inviato da gibra
    Non so cosa hai cercato...

    http://www.google.it/search?q=how+to...tbox+in+vb2008

    ad esempio:
    How to print the content of a RichTextBox control by using Visual Basic .NET or Visual Basic 2005
    http://support.microsoft.com/kb/811401/en-us

    certo che ho cercato... ho anche letto più volte la pagina da te linkatami del sito microsoft (però l'ho letta in italiano); ma nel punto 8, quando dice "Per creare RichTextBoxPrintCtrl.dll , fare clic su Genera soluzione dal menu Genera ." non trovo il menù "genera"

    vi chiedo clemenza se le mie domande sono troppo banali e semplici, ma ricordo che sono alle prime armi (è da pochi giorni che ho installato vb 2008, quindi non lo conosco ancora alla perfezione).

    Grazie ancora.
    Stig

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da STIG
    vi chiedo clemenza se le mie domande sono troppo banali e semplici, ma ricordo che sono alle prime armi (è da pochi giorni che ho installato vb 2008, quindi non lo conosco ancora alla perfezione).
    Allora dovresti prima studiarti l'ambiente di sviluppo, e poi cominciare a programmare.
    Altrimenti è come salire in auto senza avere la patente e senza conoscere un minimo di base (della serie: scusate coma faccio a metterla in moto?).
    E poi fare un'incidente (inevitabile) e chiedere clemenza.

    Va bé, tanto c'è sempre chi fornisce il codice già pronto...

  6. #6
    Originariamente inviato da gibra
    Allora dovresti prima studiarti l'ambiente di sviluppo, e poi cominciare a programmare.
    Altrimenti è come salire in auto senza avere la patente e senza conoscere un minimo di base (della serie: scusate coma faccio a metterla in moto?).
    E poi fare un'incidente (inevitabile) e chiedere clemenza.

    Va bé, tanto c'è sempre chi fornisce il codice già pronto...
    1.non ho chiesto clemenza,
    2.ho chiesto se qualcuno ha una soluzione ad un mio problema, non di farmi una predica sul fatto che sto correndo troppo; tutto quello che mi interessa ora è trovare il menù "genera soluzione". L'ho cercato per una ventina di minuti, ma senza ottenere risultati.
    3.il tuo paragone di me come un automobilista imbranato è sbagliato, piuttosto quello che stò facendo io è: "come faccio a spegnere il motore?" (poiché il mio programma l'ho già sviluppato, l'unico ostacolo che mi separa dalla compilazione completa del programma, è il menù "genera soluzione" (non lo trovo"

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Mamma mia che permaloso! VVoVe:

    Non ho fatto nessuna predica, ho solo dato un consiglio, e se si chiede aiuto, poi ci si deve anche aspettare di ricevere consigli. Almeno questo è lo scopo di un forum.
    Poi se tu interpreti i consigli come una predica, non so proprio cosa farci.

    Hai anche affermato di aver già letto quell'articolo, allora perchè non scriverlo subito ?
    Inoltre avresti dovuto scrivere già nel primo post che il tuo problema era quello di non trovare il comando Genera.
    Invece tu hai chiesto:
    ma non sono riuscito a trovare una soluzione al mio problema:
    come stampo il testo di una richtextbox?

    Comunque L'articolo (come è riportato) si riferisce a versioni precedenti di VB.NET:
    - Microsoft Visual Basic 2005
    - Microsoft Visual Basic .NET 2003 Standard Edition
    - Microsoft Visual Basic .NET 2002 Standard Edition

    il menu Genera esisteva nel NET 2002-2003, l'articolo per ovvie ragioni di compatibilità non poteva riportare Compila che in queste versioni non esiste.

    Ciao

  8. #8
    Scusate se riuppo un post vecchio ma avreianche io lo stesso problema, in fine avete/hai risolto?

  9. #9

  10. #10
    Prova a dare un'occhiata a questo articolo...

    la stampa in VB.Net

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.