Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het is gebruikelijk dat windows-toepassingen tekst afdrukken. De klasse Graphics biedt methoden voor het tekenen van objecten (afbeeldingen of tekst) op een apparaat, zoals een scherm of printer. In de volgende sectie wordt het proces voor het afdrukken van een tekstbestand gedetailleerd beschreven. Deze methode biedt geen ondersteuning voor het afdrukken van niet-platte tekstbestanden, zoals een Office Word-document of een PDF--bestand.
Opmerking
De DrawText-methoden van TextRenderer worden niet ondersteund voor afdrukken. U moet altijd de DrawString methoden van Graphicsgebruiken, zoals wordt weergegeven in het volgende codevoorbeeld, om tekst te tekenen voor afdrukdoeleinden.
Tekst afdrukken
Dubbelklik in Visual Studio op het formulier waaruit u wilt afdrukken, in het deelvenster Solution Explorer. Met deze actie wordt de Visual Designer geopend.
Dubbelklik in de Werksetop het PrintDocument onderdeel om het aan het formulier toe te voegen. Met deze actie maakt u een
PrintDocumentonderdeel met de naamprintDocument1.Voeg een
Buttontoe aan het formulier of gebruik een knop die al in het formulier staat.Selecteer de knop in de Visuele Ontwerper van het formulier. Selecteer in het deelvenster Eigenschappen de knop Gebeurtenis filter en dubbelklik vervolgens op de
Clickgebeurtenis om een gebeurtenis-handler te genereren.De
Click-gebeurteniscode moet zichtbaar zijn. Voeg buiten het bereik van de gebeurtenis-handler een privétekenreeksvariabele toe aan de klasse met de naamstringToPrint.private string stringToPrint="";'Private PrintDocument1 As New PrintDocument() Private stringToPrint As StringTerug in de code van de
Clickevent handler stel je de eigenschap DocumentName in op de naam van het document. Deze informatie wordt naar de printer verzonden. Lees vervolgens de tekstinhoud van het document en sla deze op in destringToPrinttekenreeks. Roep ten slotte de Print methode aan om de gebeurtenis PrintPage te genereren. DePrintmethode is gemarkeerd in de volgende code:private void button1_Click(object sender, EventArgs e) { string docName = "testPage.txt"; string docPath = @"C:\"; string fullPath = System.IO.Path.Combine(docPath, docName); printDocument1.DocumentName = docName; stringToPrint = System.IO.File.ReadAllText(fullPath); printDocument1.Print(); }Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim docName As String = "testPage.txt" Dim docPath As String = "C:\" Dim fullPath As String = System.IO.Path.Combine(docPath, docName) PrintDocument1.DocumentName = docName stringToPrint = System.IO.File.ReadAllText(fullPath) PrintDocument1.Print() End SubGa terug naar Visual Designer van het formulier en selecteer het
PrintDocumentonderdeel. Selecteer in het deelvenster Eigenschappen het filter Gebeurtenis en dubbelklik op dePrintPagegebeurtenis om een gebeurtenishandler te genereren.Gebruik in de PrintPage gebeurtenishandler de eigenschap Graphics van de PrintPageEventArgs-klasse en de inhoud van het document om de lengte en regels per pagina te berekenen. Nadat elke pagina is getekend, controleert u of deze de laatste pagina is en stelt u de eigenschap HasMorePages van de
PrintPageEventArgsdienovereenkomstig in. DePrintPagegebeurtenis wordt opgeroepen totdatHasMorePageswordtfalse.In het volgende codevoorbeeld wordt de gebeurtenis-handler gebruikt om de inhoud van het bestand 'testPage.txt' af te drukken in hetzelfde lettertype als het bestand dat op het formulier wordt gebruikt.
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int charactersOnPage = 0; int linesPerPage = 0; // Sets the value of charactersOnPage to the number of characters // of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(stringToPrint, this.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, out charactersOnPage, out linesPerPage); // Draws the string within the bounds of the page e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic); // Remove the portion of the string that has been printed. stringToPrint = stringToPrint.Substring(charactersOnPage); // Check to see if more pages are to be printed. e.HasMorePages = (stringToPrint.Length > 0); }Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim charactersOnPage As Integer = 0 Dim linesPerPage As Integer = 0 ' Sets the value of charactersOnPage to the number of characters ' of stringToPrint that will fit within the bounds of the page. e.Graphics.MeasureString(stringToPrint, Me.Font, e.MarginBounds.Size, StringFormat.GenericTypographic, charactersOnPage, linesPerPage) ' Draws the string within the bounds of the page e.Graphics.DrawString(stringToPrint, Me.Font, Brushes.Black, e.MarginBounds, StringFormat.GenericTypographic) ' Remove the portion of the string that has been printed. stringToPrint = stringToPrint.Substring(charactersOnPage) ' Check to see if more pages are to be printed. e.HasMorePages = stringToPrint.Length > 0 End Sub
Zie ook
- Graphics
- Brush
- Overzicht van PrintDialog-onderdelen
.NET Desktop feedback