Entwickler-Ecke
WinForms - DataGridView Inhalt drucken!
Chiller_No.1 - Do 29.07.10 14:14
Titel: DataGridView Inhalt drucken!
Moin C#ler.. ;)
Ich steh grad vo nem Problem..
Ich will eine DataGridView drucken. In dieser DataGridView sind Werte aus einer Tabelle, einer Datenbank. Ein paar Tage zuvor habe ich bereits eine Textdatei ausdrucken lassen allerdings schaffe iche s nicht den Quellcode auf ein DataGridView anzuwenden. Muss man da anders rangehen oder kann ich den alten Quelltext, mit ein paar Änderungen, benutzen?
EDIT: Textdatei drucken Quellcode..
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96:
| public drucken2() { InitializeComponent();
foreach (String printer in PrinterSettings.InstalledPrinters) { printersList.Items.Add(printer.ToString()); } }
private void drucken2_Load(object sender, PrintPageEventArgs ppeArgs) { Graphics g = ppeArgs.Graphics; float linesPerPage = 0; float yPos = 0; int count = 0; float leftMargin = ppeArgs.MarginBounds.Left; float topMargin = ppeArgs.MarginBounds.Top; string line = null; linesPerPage = ppeArgs.MarginBounds.Height / verdana10Font.GetHeight(g); while (count < linesPerPage && ((line = reader.ReadLine()) != null)) { yPos = topMargin + (count * verdana10Font.GetHeight(g)); g.DrawString(line, verdana10Font, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; }
if (line != null) { ppeArgs.HasMorePages = true; }
else { ppeArgs.HasMorePages = false; } }
private void print_Click(object sender, EventArgs e) { if (printersList.Text == "") { MessageBox.Show("Sie müssen den Drucker noch angeben!"); } else { OpenFileDialog fdlg = new OpenFileDialog(); fdlg.Title = "Druck"; fdlg.InitialDirectory = @"C:\Dokumente und Einstellungen\admin\Desktop\teste"; fdlg.Filter = "Text files (*.txt | .txt | All files (*.*) | *.*"; fdlg.FilterIndex = 2; fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK) { textBoxX1.Text = fdlg.FileName; } try { string filename = textBoxX1.Text.ToString(); reader = new StreamReader(filename); verdana10Font = new Font("Verdana", 10); PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(this.drucken2_Load); pd.PrinterSettings.PrinterName = printersList.Text;
pd.Print(); if (reader != null) reader.Close(); } catch (Exception a) { MessageBox.Show("Ungültiger Pfad!"); } }
} |
Mfg Chiller
Th69 - Do 29.07.10 14:34
Du müßtest schon ein paar Änderungen am Quellcode vornehmen, um eine DGV (bzw. dessen Inhalt) zu drucken:
- statt des StreamReaders müßtest du über die DataSource (z.B. DataTable - falls du es benutzt) oder aber über die einzelnen Zeilen und Spalten iterieren und jede Zelle entsprechend ausdrucken
- je nach DGV-Zelle (TextBox, CheckBox, ComboBox, Image, ...) mußt du dann entsprechend drucken (Text und/oder Bild)
Eine Komponente zum Drucken beliebiger Controls findest du hier:
http://www.mycsharp.de/wbb2/thread.php?threadid=29704
(diese druckt jedoch nur den sichtbaren Bereich, d.h. wenn dein DGV eine Scrollbar enthält, würde nicht alles gedruckt werden)
P.S: Bei der Internet-Suche nach "CSharp DataGridView drucken" findest du auch noch weitere Hinweise (u.a. einen Report, z.B. ReportViewer oder Crystal Report zu benutzen)
Oder z.B.
http://www.codeproject.com/KB/printing/PrintingOfDataGridView.aspx (incl. Quellcode, d.h. so ähnlich, wie ich es oben erklärt habe -)
Chiller_No.1 - Do 29.07.10 14:42
Hmm.. Ja den Link hatte ich auch schon bereits gefunden.. habe eig gehofft das es einfach geht ber ok dann werd ich mich mal reinarbeiten müssen.. ;)
Trotzdem Danke für die schnelle Hilfe.
mfg Chiller
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!