Cuestión : Lengüetas de la impresión en VB.NET

Usar System.Drawing.Printing estoy enviando contenido de un textbox a la impresora.  Sin embargo, estoy perdiendo las lengüetas dentro del textbox.  ¿Puede cualquier persona proveer de mí un cierto método que permita las lengüetas?  Consiguen actual comidas antes de printing.

Thanks.
class= del

Respuesta : Lengüetas de la impresión en VB.NET

Hola, hbash,

Sí, eso es lo que esperaba ver.   Las adiciones que usted requiere son relativamente pocas.

Para demostrar lo que usted necesita hacer, creé una forma simple con un botón y agregué su clase iHandlePrinting a ella.  El código detrás del botón es esencialmente igual que su subrutina de PrintDocument () y se demuestra en el recorte siguiente.  También he demostrado la versión modificada de la clase iHandlePrinting.  Para hacerla fácil encontrar las líneas afectadas, las he marcado con un comentario que comienza con los carácteres “~~~”.

Usted verá en mi código de la muestra para el botón de la forma que he substituido una secuencia cifrada dura para su característica de TextBox.Text.  Para su código, apenas quitar las líneas con la secuencia y el uncomment hardcoded la línea original.  

También he cambiado dos líneas en la clase iHandlePrinting que no se relacionan con las interrupciones de la tabulación.  He marcado éstos con los comentarios que comenzaban con los carácteres “~~~*”.  Recomiendo alto que usted utiliza la “opción explícita” y la “opción terminante” en toda su codificación.  El pequeño esfuerzo adicional que requiere le ahorrará de muchos problemas y dolores de cabeza misteriosos de codificación.

Oh, y apenas como nota lateral, muchos (quizás la mayoría) de los codificadores utilizan a convención de nombramiento donde la primera letra del nombre de su clase iHandlePrinting pudo sugerir que esto es un interfaz algo que una clase.  (Obviamente, mayúscula “me” utilizan más con frecuencia que la minúscula.)

Aclamaciones,
Randy
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:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
Clase pública Form1

    El submarino privado Button1_Click (remitente de ByVal como System.Object, ByVal e como System.EventArgs) dirige Button1.Click

        El strToPrint dévil como secuencia = “aquí es” y vbTab y “secuencia con algún” y vbTab y _
                                   “encajó interrupciones de la tabulación” y vbTab y “y” y vbCrLf y _
                                   vbTab y vbTab y “una nueva línea” y vbTab y “también”

        M_printer dévil como nuevo iHandlePrinting

        m_printer.PrinterFont = nueva fuente (“mensajero nuevo”, 9, FontStyle.Bold)

        'Código R de la envidia CONTRA

        m_printer.DefaultPageSettings.Margins.Left = 10
        m_printer.DefaultPageSettings.Margins.Top = 10
        m_printer.DefaultPageSettings.Margins.Bottom = 50

        'Fijar la característica de TextToPrint  
        m_printer.TextToPrint = ~~~ del "" y del vbCrLf y                    del strToPrint el 'en su código, quitan esta línea
        ''' m_printer.TextToPrint = "" y vbCrLf y ~~~ y uncomment de Me.txt SelectedRecord.Text 'esta línea.

        'Fijar las interrupciones de la tabulación required.  Observar que ~~~ de cada especificación de la lengüeta el 'agrega las líneas similares a.
        'está la compensación ~~~ del cuadro                          anterior 'esto antes de la invocación
        sngaTabStops déviles como solos () = {100.0F, 150.0F, 300.0F}         '~~~ el método de la impresión.
        m_printer.TabStops = ~~~                               de los sngaTabStops '

        'Funcionar con el comando de impresión  
        m_printer. Impresión ()

    Submarino del extremo
Clase del extremo

Importaciones System.Drawing
Importaciones System.Drawing.Printing

Clase pública iHandlePrinting: Hereda Printing.PrintDocument

#Region “variables de la característica”
    '''  
    Variable de la característica del ''' para la fuente que el usuario desea utilizar
    '''  
    '''  
    _font privado como fuente

    '''  
    La variable de la característica del ''' para el texto a se imprima
    '''  
    '''  
    _text privado como secuencia

    Los _tabStops privados como solo () = {0.0F}       '~~~ agregan este arsenal.

Región del #End

#Region “características de clase”

    Las tabulaciones de la característica pública () como solo ()  '~~~ agregan esta característica.
        Conseguir                                 el '~~~
            Volver ~~~                de los _tabStops '
        El extremo consigue                             el '~~~
        Sistema (valor de ByVal como solo ())        '~~~
            _tabStops = ~~~               del valor '
        '~~~                             fijado extremo
    ~~~ de la característica                            del extremo '

    '''  
    Característica del ''' para llevar a cabo el texto que debe ser impreso
    '''  
    '''  
    Secuencia del ''' A
    '''  
    Característica pública TextToPrint () como secuencia
        Conseguir
            Volver el _text
        El extremo consigue
        Fijar (valor de ByVal como secuencia)
            _text = valor
        Sistema del extremo
    Característica del extremo

    ¡La función pública ShowPrintDialog () como '    tipo boleano del ~~~* debe ser declarada!
        ShowPrintDialog (yo)
        De vuelta verdad
    Terminar la función

    ¡La función privada ShowPrintDialog (myDocumentToPrint de ByRef como PrintDocument) como '    tipo boleano del ~~~* debe ser declarada!
        Psd dévil como nuevo PageSetupDialog

        Con el psd
            .AllowMargins = verdad
            .AllowOrientation = verdad
            .AllowPaper = verdad
            .AllowPrinter = verdad
            .ShowHelp = verdad
            .ShowNetwork = verdad

            . Documento = myDocumentToPrint
        Extremo con
        psd.ShowDialog ()
        De vuelta verdad
    Terminar la función

    '''  
    Característica del ''' para sostener la fuente que los usuarios desean utilizar
    '''  
    '''  
    '''  
    '''  
    Característica pública PrinterFont () como fuente
        'Permite que el usuario elimine la fuente del defecto
        Conseguir
            Volver el _font
        El extremo consigue
        Fijar (valor de ByVal como fuente)
            _font = valor
        Sistema del extremo
    Característica del extremo
Región del #End

#Region “constructores de la clase”
    '''  
    Constructor vacío del '''
    '''  
    '''  
    Nuevos secundarios públicos ()
        'Fijar la corriente del archivo
        MyBase.New ()
        'Ejemplificar hacia fuera la característica del texto a una secuencia vacía
        _text = String.Empty
    Submarino del extremo

    '''  
    Constructor del ''' para inicializar nuestro objeto de la impresión
    ''' y el texto que ha supuesto para ser impresión
    '''  
    Texto del ''' que será impreso
    '''  
    Nuevo secundario público (str de ByVal como secuencia)
        'Fijar la corriente del archivo
        MyBase.New ()
        'Fijar nuestro valor de una propiedad del texto
        _text = str
    Submarino del extremo
Región del #End

#Region “OnBeginPrint”
    '''  
    Invalidación del ''' el método de OnBeginPrint del defecto del objeto de PrintDocument
    '''  
    '''  
    '''  
    Protegido elimina OnBeginPrint secundario (ByVal e como Printing.PrintEventArgs)
        'Funcionar con el código bajo
        MyBase.OnBeginPrint (e)

        'Comprobar para ver si el usuario proporcionó una fuente
        'si no hicieron entonces omitimos Times New Roman
        Si el _font entonces no es nada
            'Crear la fuente que necesitamos
            _font = nueva fuente (“Times New Roman”, 10)
        Terminar si
    Terminar el submarino
Región del #End

#Region “OnPrintPage”
    '''  
    Invalidación del ''' el método de OnPrintPage del defecto del PrintDocument
    '''  
    '''  
    El ''' esto proporciona la lógica de la impresión para nuestro documento
    Protegido elimina OnPrintPage secundario (ByVal e como Printing.PrintPageEventArgs)
        'Funcionar con el código bajo
        MyBase.OnPrintPage (e)

        'Declarar las variables locales necesarias
        curChar estático como número entero
        printHeight dévil como número entero
        printWidth dévil como número entero
        leftMargin dévil como número entero
        rightMargin dévil como número entero
        Líneas déviles como Int32
        Amortiguar los carbones de leña como Int32

        'Fijar el tamaño y los márgenes del área de impresión
        Con MyBase.DefaultPageSettings
            printHeight = .PaperSize.Height -. Margins.Top -. Margins.Bottom
            printWidth = .PaperSize.Width -. Margins.Left -. Margins.Right
            leftMargin =. Margins.Left 'X
            rightMargin =. Margins.Top   'Y
        Extremo con

        'Comprobar si el usuario seleccionado imprimir en modo de paisaje
        'si hicieron entonces necesitamos intercambiar parámetros de la altura/de la anchura
        Si MyBase.DefaultPageSettings.Landscape entonces
            Tmp dévil como número entero
            tmp = printHeight
            printHeight = printWidth
            printWidth = tmp
        Terminar si

        'Ahora necesitamos determinar el número de líneas total
        'vamos a ser impresión
        numLines déviles como Int32 = CInt (printHeight/PrinterFont.Height)

        'Crear una impresión del rectángulo están para nuestro documento
        Amortiguar el printArea como nuevo RectangleF (leftMargin, rightMargin, printWidth, el printHeight)

        'Utilizar la clase de StringFormat para la disposición del texto de nuestro documento
        Amortiguar el formato como nuevo StringFormat (StringFormatFlags.LineLimit)
        ~~~ de format.SetTabStops (0.0F, _tabStops                ) el 'agrega esta línea.

        'Caber tantos carácteres como podemos en el área de impresión      

        e.Graphics.MeasureString (_text. Subsecuencia (RemoveZeros (curChar)), PrinterFont, nuevo SizeF (printWidth, printHeight), formato, carbones de leña, líneas)

        'Imprimir la página
        e.Graphics.DrawString (_text. Subsecuencia (RemoveZeros (curChar)), PrinterFont, Brushes.Black, printArea, formato)

        'Aumentar la cuenta actual del carbón de leña
        carbones de leña curChar de +=

        'Detemine si hay más texto a imprimir, si
        'hay el decir que la impresora allí es que viene más
        Si es curChar  <>
    Función del ''' para substituir cuaesquiera ceros adentro el tamaño a un 1
    El ''' cero ensuciará el área de impresión
    '''  
    Valor del ''' a comprobar
    '''  
    '''  
    Función pública RemoveZeros (valor de ByVal como número entero) como número entero
        'Comprobar el valor pasajero en la función,
        'si el valor es un 0 (cero) entonces volver un 1,
        'de otra manera vuelta que el valor pasó adentro
        Seleccionar el valor del caso
            Caso 0
                Vuelta 1
            Caso 
                Valor de vuelta
        Extremo selecto
    Función del final
Región del #End

Clase del extremo
Otras soluciones  
 
programming4us programming4us