C# - PrintDocument (Drucken mit .NET) - Keine Daten im Formular

Michael`

Enthusiast
Thread Starter
Mitglied seit
08.09.2005
Beiträge
734
Was soll Programmiert werden?

Ein "Wasserverbrauchsrechner", in dem man den Verbrauch der einzelnen Wasseruhren eingeben kann und daraus einem der Gesamtbetrag berechnet wird. Das funktioniert auch schon, war kein Problem.

Wo liegt mein Problem?

Das ganze muss natürlich auch ausgedruckt werden. Da ich absolut keinen Ansatz habe, wie man sowas in ein Formular bringt und danach druckt hab ich Google angeworfen und ich wurde bei dotnet-snippets.de auf PrintDocument aufmerksam. Ich habe mir den Code-Snippet mal in Visual Studio 2008 kopiert und entsprechend die TextBoxen/Buttons/Labels und dieses mir unbekannte PrintDocument in Form1 hinzugefügt. Das Starten des Programms funktioniert auch soweit, der Debugger zeigt keine Fehler/Warnungen.

Und wo liegt nun das Problem? :)

Nach Eingabe der Daten und drücken auf den Button wird eine leere Seite angezeigt. Irgendwie werden halt keine Daten ins Formular übernommen.



Hier der Code:

Quelle: http://dotnet-snippets.de/dns/c-formulare-erstellen-und-drucken-mit-net-SID802.aspx

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Druckformular
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
MTB11.Text = DateTime.Today.ToShortDateString();
}

private void b1_Click_1(object sender, EventArgs e)
{
// Fehlerbehandlung ---------------------------------------------------------------

if (TB1.Text == "")
{
MessageBox.Show("Bitte den Namen des Begünstigten eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Konto-Nr. des Begünstigten -----------------------------------------------------

string text2 = TB2.Text;
if (System.Text.RegularExpressions.Regex.IsMatch(text2, @"^[0-9]+$") == false)
{
MessageBox.Show("Bitte die Konto-Nr. des Begünstigten eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Bankleitzahl -------------------------------------------------------------------

string text3 = TB3.Text;
if (System.Text.RegularExpressions.Regex.IsMatch(text3, @"^\d{8}$") == false)
{
MessageBox.Show("Bitte eine gültige Bankleitzahl eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Kreditinstitut des Begünstigten ------------------------------------------------

string text4 = TB4.Text;
if (TB4.Text == "")
{
MessageBox.Show("Bitte das Kreditinstitut des Begünstigten eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Währung ------------------------------------------------------------------------

string text5 = TB5.Text;
if (System.Text.RegularExpressions.Regex.IsMatch(text5, @"^[A-Z]+$") == false)
{
MessageBox.Show("Bitte die Währung des Betrages eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Zu überweisender Betrag --------------------------------------------------------

string text6 = TB6.Text;
if (System.Text.RegularExpressions.Regex.IsMatch(text6, @"^\d{1,7}\,\d{1,2}$") == false)
{
MessageBox.Show("Bitte den zu überweisenden Betrag eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Verwendungszweck1 --------------------------------------------------------------

if (TB7.Text == "")
{
MessageBox.Show("Bitte einen Verwendungszweck eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// Verwendungszweck2 --------------------------------------------------------------

if (TB8.Text == "")
{
MessageBox.Show("Bitte einen weiteren Verwendungszweck eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Kontoinhaber -------------------------------------------------------------------

string text9 = TB9.Text;
if (TB9.Text == "")
{
MessageBox.Show("Bitte den Namen des Kontoinhabers eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// Konto-Nr. des Kontoinhabers ----------------------------------------------------

string text10 = TB10.Text;
if (System.Text.RegularExpressions.Regex.IsMatch(text10, @"^[0-9]+$") == false)
{
MessageBox.Show("Bitte die Konto-Nr. des Kontoinhabers eintragen ...", "Drucken mit .NET", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

PrintPreviewDialog1.Document = this.PrintDocument1;

if (PrintPreviewDialog1.ShowDialog() == DialogResult.OK)
{
this.PrintDocument1.Print();
}
}
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics gr = e.Graphics;
Font fnt = new Font("Arial", 12, FontStyle.Regular);
Brush br = Brushes.Black;

string t1 = TB1.Text; // Begünstigter
gr.DrawString(t1, fnt, br, 23, 51); // Maße in Pixel

string t2 = TB2.Text; // Konto-Nr. des Begünstigten
gr.DrawString(t2, fnt, br, 23, 85);

string t3 = TB3.Text; // Bankleitzahl
gr.DrawString(t3, fnt, br, 399, 85);

string t4 = TB4.Text; // Kreditinstitut des Begünstigten
gr.DrawString(t4, fnt, br, 23, 119);

//string t5 = TB5.Text; // Währung
//gr.DrawString(t5, fnt, br, 323, 151);

string t6 = TB6.Text; // Betrag
gr.DrawString(t6, fnt, br, 323, 152);

string t7 = TB7.Text; // Verwendungszweck1
gr.DrawString(t7, fnt, br, 23, 184);

string t8 = TB8.Text; // Verwendungszweck2
gr.DrawString(t8, fnt, br, 23, 217);

string t9 = TB9.Text; // Kontoinhaber
gr.DrawString(t9, fnt, br, 23, 249);

string t10 = TB10.Text; // Konto des Kontoinhabers
gr.DrawString(t10, fnt, br, 23, 284);

string t11 = MTB11.Text; // Datum
gr.DrawString(t11, fnt, br, 235, 320);

fnt.Dispose();
}
}
}
 

Anhänge

  • 1.JPG
    1.JPG
    50,7 KB · Aufrufe: 30
  • 2.JPG
    2.JPG
    52,3 KB · Aufrufe: 31
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Schaut für mich so aus als ob du das PrintPage Event des PrintDocuments nicht angemeldet hast.

Edit:
Also folgendes ins Load Event, oder wie auch immer.
PrintDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDocument1_PrintPage);

auch den Brush Disposen oder du kannst auch usings verwenden, wobei das bei mehreren Verschachtelungen unübersichtlich wird.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh