Megosztás a következőn keresztül:


Többoldalas szövegfájl nyomtatása

A Windows-alapú alkalmazások gyakran nyomtatnak szöveget. A Graphics osztály metódusokat biztosít objektumok (ábrák vagy szövegek) eszközre, például képernyőre vagy nyomtatóra való rajzolásához. Az alábbi szakasz részletesen ismerteti a szövegfájl nyomtatásának folyamatát. Ez a módszer nem támogatja a nem egyszerű szöveges fájlok, például office Word-dokumentumok vagy PDF- fájlok nyomtatását.

Megjegyzés:

A DrawText nyomtatási módszerek TextRenderer nem támogatottak. Mindig a DrawStringGraphics metódusait kell használnia, ahogyan az a következő kód példában látható, a szöveg nyomtatáshoz való rajzolásához.

Szöveg nyomtatása

  1. A Visual Studióban kattintson duplán a nyomtatni kívánt űrlapra a Megoldáskezelő panelen. Ez a művelet megnyitja a Visual Designert.

  2. Az Eszközkészletterületen kattintson duplán a PrintDocument összetevőre az űrlaphoz való hozzáadásához. Ez a művelet létrehoz egy PrintDocument összetevőt a névvel printDocument1.

  3. Adjon hozzá egy Button az űrlaphoz, vagy használjon egy gombot, amely már szerepel az űrlapon.

  4. Az űrlap Visual Designerjében válassza ki a gombot. A Tulajdonságok panelen válassza az Esemény szűrőgombot, majd kattintson duplán a Click eseményre egy eseménykezelő létrehozásához.

  5. A Click eseménykódjának láthatónak kell lennie. Az eseménykezelő hatókörén kívül adjon hozzá egy privát sztringváltozót a stringToPrintnevű osztályhoz.

    private string stringToPrint="";
    
    'Private PrintDocument1 As New PrintDocument()
    Private stringToPrint As String
    
  6. Lépjen vissza a(z) Click eseménykezelő kódjába, és állítsa be a(z) DocumentName tulajdonságot a dokumentum nevére. Ezt az információt a rendszer elküldi a nyomtatónak. Ezután olvassa el a dokumentum szöveges tartalmát, és tárolja a stringToPrint sztringben. Végül hívja meg a Print metódust a PrintPage esemény indításához. A Print metódus a következő kódban van kiemelve:

    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 Sub
    
  7. Térjen vissza az űrlap Visual Designerjéhez, és válassza ki a PrintDocument összetevőt. A Tulajdonságok panelen válassza ki a Esemény szűrőt, majd kattintson duplán a PrintPage eseményre egy eseménykezelő létrehozásához.

  8. Az PrintPage eseménykezelőben használja a Graphics osztály PrintPageEventArgs tulajdonságát, valamint a dokumentum tartalmát a sorhossz és a sorok oldalonkénti kiszámításához. Az egyes lapok megrajzolása után ellenőrizze, hogy ez-e az utolsó oldal, és ennek megfelelően állítsa be a HasMorePagesPrintPageEventArgs tulajdonságát. A PrintPage esemény addig kerül indításra, amíg HasMorePagesfalse.

    Az alábbi kód példában az eseménykezelő a "testPage.txt" fájl tartalmát az űrlapon használt betűtípussal megegyező betűtípussal nyomtatja ki.

    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
    

Lásd még