Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Często aplikacje oparte na systemie Windows mogą drukować tekst. Klasa Graphics udostępnia metody rysowania obiektów (grafiki lub tekstu) na urządzeniu, takich jak ekran lub drukarka. W poniższej sekcji opisano szczegółowo proces drukowania pliku tekstowego. Ta metoda nie obsługuje drukowania plików innych niż zwykły tekst, takich jak dokument Word lub plik PDF.
Uwaga / Notatka
Metody DrawText firmy TextRenderer nie są obsługiwane do celów drukowania. Zawsze należy użyć metod DrawStringGraphics, jak pokazano w poniższym przykładzie kodu, aby rysować tekst do celów drukowania.
Aby wydrukować tekst
W programie Visual Studio kliknij dwukrotnie formularz, który chcesz wydrukować, w okienku Eksplorator rozwiązań. Ta akcja otwiera projektanta wizualnego.
W przyborniku . Ta akcja powoduje utworzenie
PrintDocument
składnika o nazwieprintDocument1
.Dodaj
Button
do formularza lub użyj przycisku znajdującego się już w formularzu.W projektancie wizualizacji formularza wybierz przycisk. W okienku właściwości
wybierz przycisk filtru zdarzenia , a następnie kliknij dwukrotnie zdarzenie , aby wygenerować procedurę obsługi zdarzeń. Kod zdarzenia
Click
powinien być widoczny. Poza zakresem procedury obsługi zdarzeń dodaj prywatną zmienną typu string do klasy o nazwiestringToPrint
.private string stringToPrint="";
'Private PrintDocument1 As New PrintDocument() Private stringToPrint As String
Po powrocie do kodu programu obsługi zdarzeń
Click
ustaw właściwość DocumentName na nazwę dokumentu. Te informacje są wysyłane do drukarki. Następnie odczytaj zawartość tekstową dokumentu i zapisz ją w ciągustringToPrint
. Na koniec wywołaj metodę Print, aby zgłosić zdarzenie PrintPage. MetodaPrint
jest wyróżniona w następującym kodzie: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
Wróć do projektanta wizualnego formularza i wybierz składnik
PrintDocument
. W okienku Właściwości wybierz filtr wydarzeń, a następnie kliknij dwukrotnie zdarzeniePrintPage
, aby wygenerować procedurę obsługi zdarzenia.W programie obsługi zdarzeń PrintPage użyj właściwości Graphics klasy PrintPageEventArgs i zawartości dokumentu, aby obliczyć długość wiersza i wiersze na stronę. Po narysowaniu każdej strony sprawdź, czy jest to ostatnia strona, i odpowiednio zmień właściwość HasMorePages obiektu
PrintPageEventArgs
. ZdarzeniePrintPage
jest zgłaszane dopókiHasMorePages
nie zostaniefalse
.W poniższym przykładzie kodu program obsługi zdarzeń jest używany do drukowania zawartości pliku "testPage.txt" w tej samej czcionki, która jest używana w formularzu.
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
Zobacz także
- Graphics
- Brush
- Omówienie komponentu PrintDialog
.NET Desktop feedback