Este pretende ser un ejemplo muy simple y breve en visual basic .net. Sencillo para que se entienda rapidamente su funcionamiento y breve (con muy poco código) para que nada nos estorbe a la hora de ponerle nuestro toque personal. Los programadores somos muy creativos y me a pasado muchas veces que me encontré con ejemplos muy complejos y llenos de código, los cuales tuve que desmenuzar y analizar por partes para poder entender su funcionamiento. Así que trato de poner en todos mis post ejemplos concretos, simples y que funcionen con solo copiar, pegar y hacer una mimina configuración a los controles.
Necesitamos:
Un Winform (Form1), un control PrintDocument (PrintDocument1), un control PrintDialog (PrintDialog1), un TextBox (TextBox1) y un Botón (Button1). El formulario debería tener un aspecto similar al de esta imagen:

Copiamos el siguiente código en el evento click de button1
If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings PrintDocument1.Print() End If
que lo que hace es abrir el cuadro de dialogo para seleccionar la impresora y luego pasa pasa toda la configuración seleccionada al objeto printDocument y luego le dice que imprima. Lo que dispara el evento PrintPage de printDocument.
Ahora sobre el objeto PrintDocument1 hacemos doble clic y pegamos el siguiente código
e.Graphics.DrawString(TextBox1.Text, New Font("Verdana", 18, FontStyle.Bold), Brushes.Black, 10, 10)
For i As Integer = 1 To 10
e.Graphics.DrawString("Ejemplo de linea: " & i, New Font("Tahoma", 10, FontStyle.Bold), Brushes.Black, 10, 20 + (i * 30))
Next
Al ejecutar el programa este imprimirá el contenido de la caja de texto como titulo de la pagina y diez lineas de ejemplo utilizando distinta y furnte y tamaño. El resultado se verá similar al de la siguiente imagen:

más información sobre los controles…
PrintDialog (Componente, formularios Windows Forms)
El componente PrintDialog de formularios Windows Forms es un cuadro de diálogo preconfigurado que se utiliza para seleccionar una impresora, elegir las páginas que se van a imprimir y determinar otros valores de configuración relacionados con la impresión en aplicaciones basadas en Windows. Utilícelo como una solución sencilla para seleccionar configuraciones de la impresora o relacionadas con la impresora, en lugar de configurar un cuadro de diálogo propio. Puede permitir que los usuarios impriman diversas partes de sus documentos: imprimir todo, imprimir el intervalo de páginas especificado o imprimir una selección. Al basarse en cuadros de diálogo estándar de Windows, creará aplicaciones cuya funcionalidad básica les resultará inmediatamente familiar a los usuarios.
PrintDocument (Componente, formularios Windows Forms)
El componente PrintDocument de formularios Windows Forms se utiliza para establecer las propiedades que describen qué se imprime y, a continuación, para imprimir el documento dentro de aplicaciones basadas en Windows.
Información Bitacoras.com…
Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias….
Es muy bueno cuando queremos imprimir textbox de un formulario sin necesidad de hacer un informe.
No se si podrias publicar algo sobre como hacer que un recibo de compra que este en un reportviewer se imprima automaticament en una imprsora predeterminada sin necesidad de abrir el pirntdialog de reportviewer.
hasta luego y felicidades por tus aportes.
Excelente! Amo lo simple. Incluso funcionan los seteos de página como orientación y tamaño
me ayudo mucho este codigo de hecho estuve buscando mucho por internet y me salio codigo muy complejo gracias por cierto no mas te falto declarar la variable & pero todo salio perfecto
Hola estube buscando por muchas partes hasta que encontre tu ejemplo y me ayudo basatante ya que en otras paginas habia muchisimo codigo y no sabia que parte era la que realmente imprimia
muchas gracias por el ejemplo
Gracias Alex, esa es la idea principal de este blog: que lo ejemplos sean breves y claros para que no te enriedes con tanto código.
aca tienen el codigo para C#!
namespace Print
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.PrinterSettings = printDialog1.PrinterSettings;
printDocument1.Print();
}
}
private void printDocument1_PrintPage_1(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int a = 50;
for (int i = 0; i < 10; i++)
{
e.Graphics.DrawString(“SampleText”, new Font(“Verdana”, 20 – i, FontStyle.Italic), Brushes.Black, 20, a);
a = a + 25;
}
}
}
}
como puedo saber la posición en la que saldrá la impresión cuando le doy las coordenadas X e Y
Socio, Excelente post, claro y sencillo, busque algo o alguien que explicara las cosas como debian ser por toda la web y solo esto me sirvio.Hay gente que explica de una manera complicada y con mucho codigo para sentirse que saben mucho. 10 pt.
Gracias y Saludos!
Excelente post, Te felicito, opino lo mismo que los demás, muy claro y explicativo, no como los otros que he visto.
Tendrás algo sobre crystal report basic for visual studio 8?
He hecho varios reportes y no me resulta como pasarle parámetros desde window form para aplicar ciertos filtros a las consultas.
gracias
Hola, necesito saber como imprimir la informacion que yo desee de los forms, por ejeplo los textos de los textbox, especificos y en lugares especificos y que me genere una vista previa antes de imprimirlos, no se mucho de esto pero quiero que me ayuden con eso. gracias!!
Tu si eres programador, si quieren poner el codigo de algo no hay nada mas practico que poner lo basico, ya cada quien le agrega lo que quiere, muchas gracias
Te felicito por la manera sencilla y clara
con la cuál explicas.
Te pido que por favor me expliques,como hacer para que en el PrintPage se ponga el día,nombre del més y el año.¿Cuál es el Código que debo poner en el PrintDocument?
Ejemplö:
Expedida el¿dia? de ¿nombre del més?del¿Año?
Muchas gracias.
De la misma forma en que imprimes cualquier variable. Para obtener la fecha del sistema usa: Now.date.
Suerte
Hola Eliseo, excelente ejemplo, muy sencillo y útil, solo quisiera saber como puedo hacer para indicarle al documento las coordenadas X,Y de la página donde quiero que se imprima la información. Esto lo necesito porque tengo que imprimir una serie de codigos de barras en unas páginas que ya traen 25 etiquetas en blanco.
Gracias de antemano.
En DrawString tienes propiedades que te permiten indicar las coordenadas X, Y donde se imprimirá. Solo es cuestion de hacer algunas pruebas y estoy seguro que podrás resolverlo.
Suerte
Hola gracias por el Aporte, me ha sido muy util, pero quisiera saber como imprimir el resultado de una consulta en un DataGrid
Gracias
como puedo hacer q mi formulario tenga la opcion de nuevo
Hola, he estado probando la mayoria de los ejemplos y resulta que todos son muy buenos.
Mil gracias.
Pero ahora tengo un pequeño gran problema:
estoy recuperando informacion de una tabla y al listarla me ocupa mas de una pagina y NO encuentro como pasar a la siguiente. Agradeceria un ejemplo de esos tuyos y me quedaria mas que claro.
Trabajo con VS.net 2008 y MySql.
hola que tal men pero sale error en &, en el mensaje de error dice que falta declararlo pero me gustaria saber en que forma lo declaras, espero tu pronta respuesta, gracias…
caaaaaaaaaaapooooooooooooooo…
y para imprimir una foto, como seria?
no encuentro una onda DrawImagen pero desde archivo…
Hola!
Muy interesante el ejemplo. Yo programo en C#.
Hay alguna manera de previsualizar esto?
Saludos!
Me parece muy bien para imprimir los tesxtbox, con pocos caracteres, pero cuando intento imprimir un campo memo, que tiene varias líneas, me produce un error. Resulta que no me respeta los 80 caracteres por línea, como está en el campo memo, escribe la línea hasta que haya un punto y aparte, así que al imprimir solamente sale los primeros 80 caracteres de cada punto y aparte.
Os agradecería que me digáis como puedo subsanar este error.
Hola, sabes he intentado el ejemplo inicial, pero sin suerte que imprima, utilizo una impresora PDF. Y siempre me sale en blanco. Con seguridad me esta faltando especificar parametros o demas.. si me ayudas por favor ?
Gracias.
Que falta por añadir al ejemplo para poner el retorno de carro.
Gracias de antemano,
Sabéis como hay que poner: 90 caracteres por línea y hacer un retorno de Carro
Bien loquito… ¡te luciste!
Merci Beaucoup
xk aparece & como no declarado
la parte & borralo, solo dejalo con el &
nada mas
Sos un capo man me re sirvio, gracias.
excelente pero vuelvo a preguntar hay alguna manera para imprimir el resultado de una consulta en un datagridview?¿
oye como le hago para imprimir el contenido de un DataGridView1
Estoy volviendome loco!!!
Tengo un documento de word, al que llamo para imprimir,
wdoc.print()
El caso es que tengo predeterminada la impresora banca y negra, y quiero escojer, si lo hago con PDF Creator o la de Color. He probado de todo sin resultado alguno.
Alguien sería tan amable de decirme un codigo para decirle que imprima el “wdoc” con la impresora que yo eliga?
Muchas gracias de antemano!
Hola!!
Me gustó el post,pero me quedó algo en duda…
si por ejemplo yo tengo 2 textbox,y quiero que imprima el texto del TextBox1,como hago??
Excelente articulo, la verdad en lo mas sencillo mejor. y resto es solo experimentar
si en vez de imprimir un tex quiero imrimir un
DataGridView como ago