visual studio seleccionar net imprimir impresora formulario boton c# printing datagridview

c# - studio - ¿Cómo agregar el diálogo de impresión al dialogo de impresión previa?



printdialog (2)

Mi jefe quiere que cree el formulario de ventana que tiene función de impresión, pero quiere imprimir la vista de datagridview después de la vista previa.

Así que ahora animo el problema, no puedo imprimir varios juegos de papel o elegir la impresora o realizar cambios cuando hago clic en el botón imprimir en el printpreviewdialog impresión printpreviewdialog . Cuando hago clic en el botón, se va a imprimir directamente el papel. Así que deseo unirme al printpreviewdialog printdialog printpreviewdialog e printdialog .

¿Por qué printpreviewdialog y printdialog solo se pueden usar en diferentes botones? Es falta de uso cuando es necesario hacer clic en un botón para obtener una vista previa y hacer clic en otro botón para imprimir varios conjuntos y realizar cambios en la impresora.

¿Alguien puede ayudarme?

printdialog

DialogResult result = printDialog1.ShowDialog(); // If the result is OK then print the document. if (result == DialogResult.OK) { position = 0; pageno = 1; printDocument2.DefaultPageSettings.Margins = new Margins(20, 20, 20, 20); printDocument2.OriginAtMargins = true; printPreviewDialog1.Document = printDocument2; printPreviewDialog1.ShowDialog(); }

printpreviewdialog

printDocument3.DefaultPageSettings.Margins = new Margins(20, 20, 20, 20); printDocument3.OriginAtMargins = true; //((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]).Enabled = false; printPreviewDialog1.Document = printDocument3; printPreviewDialog1.ShowDialog();


Funciona bien ... Tiene un consejo ... Puede reutilizar el ícono actual de la siguiente manera:

this.ToolStripButton.Image = ((System.Windows.Forms.ToolStrip)(printPreviewDialog.Controls[1])).ImageList.Images[0];

El resto del fragmento:

{ this.ToolStripButton = new System.Windows.Forms.ToolStripButton(); this.ToolStripButton.Image = ((System.Windows.Forms.ToolStrip)(printPreviewDialog.Controls[1])).ImageList.Images[0]; this.ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.ToolStripButton.Click += new System.EventHandler(this.printPreview_PrintClick); ((System.Windows.Forms.ToolStrip)(printPreviewDialog.Controls[1])).Items.RemoveAt(0); ((System.Windows.Forms.ToolStrip)(printPreviewDialog.Controls[1])).Items.Insert(0, ToolStripButton); } private void printPreview_PrintClick(object sender, System.EventArgs ee) { try { this.printDialog.Document = printDocument; if (printDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { printDocument.Print(); } } catch (System.Exception ex) { System.Windows.MessageBox.Show(ex.Message, ToString()); } } private System.Windows.Forms.ToolStripButton ToolStripButton;


Sé que es tarde, pero creo que alguien todavía necesitará eso. Como dice Hans Passant, "la vista previa de impresión depende en gran medida de la configuración de la impresora y la página". Pero hay un botón de impresión en el diálogo de impresión previa, que sigue siendo razonable para la mayoría de los casos. Pero ese botón se imprime directamente en su impresora predeterminada y nunca muestra un cuadro de diálogo. Si desea un diálogo de impresión desde el diálogo de impresión previa, puede manipular ToolStrip de PrintPreviewDialog.

Aquí va (suponiendo que haya inicializado los objetos printPreviewDialog1, printDialog1 e printDocument1)

printPreviewDialog1.Document = printDocument1; ToolStripButton b = new ToolStripButton(); b.Image = Properties.Resources.PrintIcon; b.DisplayStyle = ToolStripItemDisplayStyle.Image; b.Click += printPreview_PrintClick; ((ToolStrip)(printPreviewDialog1.Controls[1])).Items.RemoveAt(0); ((ToolStrip)(printPreviewDialog1.Controls[1])).Items.Insert(0, b); printPreviewDialog1.ShowDialog();

Usando el código anterior, puede quitar el botón de impresión predeterminado en ToolStrip de PrintPreview y reemplazarlo con un "botón de impresión" recién creado. Este botón ahora tiene un controlador de eventos Click, y al usarlo, puede mostrar el PrintDialog.

private void printPreview_PrintClick(object sender, EventArgs e) { try { printDialog1.Document = printDocument1; if (printDialog1.ShowDialog() == DialogResult.OK) { printDocument1.Print(); } } catch (Exception ex) { MessageBox.Show(ex.Message, ToString()); } }