Pergunta : Abas da impressão em VB.NET

Using System.Drawing.Printing eu estou emitindo índices de um textbox à impressora.  Entretanto, eu estou perdendo as abas dentro do textbox.  Pode qualquer um fornecer-me algum método que permitirá as abas?  Atualmente começ comida antes de printing.

Thanks.
class= do

Resposta : Abas da impressão em VB.NET

Olá!, hbash,

Sim, aquele é o que eu esperei ver.   As adições que você exige são relativamente poucas.

Para demonstrar o que você precisa de fazer, eu criei um formulário simples com a uma tecla e adicionei-lhe sua classe iHandlePrinting.  O código atrás da tecla é essencialmente o mesmo que sua sub-rotina de PrintDocument () e é mostrado na seguinte pequena notícia.  Eu igualmente mostrei a versão modificada da classe iHandlePrinting.  Para fazê-la fácil encontrar as linhas afetadas, eu marquei-as com um comentário que começasse com os caráteres “~~~”.

Você verá em meu código da amostra para a tecla do formulário que eu substituí uma corda codificada dura para sua propriedade de TextBox.Text.  Para seu código, apenas remover as linhas com a corda e o uncomment hardcoded a linha original.  

Eu igualmente mudei duas linhas na classe iHandlePrinting que não se relacionam aos batentes de aba.  Eu marquei estes com os comentários que começam com os caráteres “~~~*”.  Eu recomendo altamente que você usa a “opção explícita” e a “opção estrita” em toda sua codificação.  O esforço que extra pequeno exige conservá-lo-á de muitos problemas e dores de cabeça misteriosos de codificação.

Oh, e apenas como uma nota lateral, muitos (talvez a maioria) de codificadores usam uma convenção de nomeação onde a primeira letra do nome de sua classe iHandlePrinting possa sugerir que esta fosse uma relação um pouco do que uma classe.  (Evidentemente, upper-case “eu” sou usado mais freqüentemente do que o lowercase.)

Elogios,
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:
Classe pública Form1

    O submarino confidencial Button1_Click (remetente de ByVal como System.Object, ByVal e como System.EventArgs) segura Button1.Click

        O strToPrint não ofuscante como a corda = “é aqui” & vbTab & “corda com algum” & vbTab & _
                                   “encaixou batentes de aba” & vbTab & “e” & vbCrLf & _
                                   vbTab & vbTab & “uma nova linha” & vbTab & “demasiado”

        M_printer não ofuscante como iHandlePrinting novo

        m_printer.PrinterFont = pia batismal nova (“correio novo”, 9, FontStyle.Bold)

        'Código R da inveja CONTRA

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

        'Ajustar a propriedade de TextToPrint  
        m_printer.TextToPrint = o ~~~ do "" & do vbCrLf &                    do strToPrint 'em seu código, removem esta linha
        ''' m_printer.TextToPrint = "" & vbCrLf & ~~~ e uncomment de Me.txt SelectedRecord.Text 'esta linha.

        'Ajustar os batentes de aba required.  Anotar que o ~~~ de cada especificação da aba 'adiciona as linhas similares a.
        'é o offset da aba precedente.                          '~~~ isto antes da invocação
        sngaTabStops não ofuscantes como únicos () = {100.0F, 150.0F, 300.0F}         '~~~ o método da cópia.
        m_printer.TabStops = ~~~                               dos sngaTabStops '

        'Funcionar o comando de cópia  
        m_printer. Cópia ()

    Submarino da extremidade
Classe da extremidade

Importações System.Drawing
Importações System.Drawing.Printing

Classe pública que iHandlePrinting: Herda Printing.PrintDocument

#Region da “variáveis propriedade”
    '''  
    Variável da propriedade do ''' para a pia batismal que o usuário deseja se usar
    '''  
    '''  
    _font confidencial como a pia batismal

    '''  
    A variável da propriedade do ''' para o texto a seja imprimida
    '''  
    '''  
    _text confidencial como a corda

    Os _tabStops confidenciais como único () = {0.0F}       '~~~ adicionam esta disposição.

Região do #End

#Region de “propriedades classe”

    As tabulação da propriedade pública () como o único ()  '~~~ adicionam esta propriedade.
        Começ                                 'o ~~~
            Retornar ~~~                dos _tabStops '
        A extremidade começ                             'o ~~~
        Jogo (valor de ByVal como único ())        '~~~
            _tabStops = ~~~               do valor '
        '~~~                             ajustado extremidade
    ~~~ da propriedade                            da extremidade '

    '''  
    Propriedade do ''' para prender o texto que deve ser imprimido
    '''  
    '''  
    Corda do ''' A
    '''  
    Propriedade pública TextToPrint () como a corda
        Começ
            Retornar o _text
        A extremidade começ
        Ajustar (valor de ByVal como a corda)
            _text = valor
        Jogo da extremidade
    Propriedade da extremidade

    A função pública ShowPrintDialog () como '    o tipo bôoleano do ~~~* deve ser declarada!
        ShowPrintDialog (eu)
        Do retorno retificar
    Terminar a função

    A função confidencial ShowPrintDialog (myDocumentToPrint de ByRef como PrintDocument) como '    o tipo bôoleano do ~~~* deve ser declarada!
        Psd não ofuscante como PageSetupDialog novo

        Com psd
            .AllowMargins = retificam
            .AllowOrientation = retificam
            .AllowPaper = retificam
            .AllowPrinter = retificam
            .ShowHelp = retificam
            .ShowNetwork = retificam

            . Original = myDocumentToPrint
        Extremidade com
        psd.ShowDialog ()
        Do retorno retificar
    Terminar a função

    '''  
    Propriedade do ''' para prender a pia batismal que os usuários desejam se usar
    '''  
    '''  
    '''  
    '''  
    Propriedade pública PrinterFont () como a pia batismal
        'Permite que o usuário cancele a pia batismal do defeito
        Começ
            Retornar o _font
        A extremidade começ
        Ajustar (valor de ByVal como a pia batismal)
            _font = valor
        Jogo da extremidade
    Propriedade da extremidade
Região do #End

#Region da “construtores classe”
    '''  
    Construtor vazio do '''
    '''  
    '''  
    Novos secundários públicos ()
        'Ajustar o córrego da lima
        MyBase.New ()
        'Instantiate para fora a propriedade do texto a uma corda vazia
        _text = String.Empty
    Submarino da extremidade

    '''  
    Construtor do ''' para inicializar nosso objeto da impressão
    ''' e o texto que sups para ser impressão
    '''  
    Texto do ''' que será imprimido
    '''  
    Novo secundário público (estreptococo de ByVal como a corda)
        'Ajustar o córrego da lima
        MyBase.New ()
        'Ajustar nosso valor dos bens imóveis do texto
        _text = estreptococo
    Submarino da extremidade
Região do #End

#Region “OnBeginPrint”
    '''  
    Ultrapassagem do ''' o método de OnBeginPrint do defeito do objeto de PrintDocument
    '''  
    '''  
    '''  
    Protegido cancela OnBeginPrint secundário (ByVal e como Printing.PrintEventArgs)
        'Funcionar o código baixo
        MyBase.OnBeginPrint (e)

        'Verific para ver se o usuário forneceu uma pia batismal
        'se não fizeram então nós optamos Times New Roman
        Se o _font não é nada então
            'Criar a pia batismal que nós precisamos
            _font = pia batismal nova (“Times New Roman”, 10)
        Terminar se
    Terminar o submarino
Região do #End

#Region “OnPrintPage”
    '''  
    Ultrapassagem do ''' o método de OnPrintPage do defeito do PrintDocument
    '''  
    '''  
    O ''' isto fornece a lógica da cópia para nosso original
    Protegido cancela OnPrintPage secundário (ByVal e como Printing.PrintPageEventArgs)
        'Funcionar o código baixo
        MyBase.OnPrintPage (e)

        'Declarar as variáveis locais necessários
        curChar de estática como o inteiro
        printHeight não ofuscante como o inteiro
        printWidth não ofuscante como o inteiro
        leftMargin não ofuscante como o inteiro
        rightMargin não ofuscante como o inteiro
        Linhas não ofuscantes como Int32
        Escurecer carvões animais como Int32

        'Ajustar o tamanho e as margens da área de cópia
        Com MyBase.DefaultPageSettings
            printHeight = .PaperSize.Height -. Margins.Top -. Margins.Bottom
            printWidth = .PaperSize.Width -. Margins.Left -. Margins.Right
            leftMargin =. Margins.Left 'X
            rightMargin =. Margins.Top   'Y
        Extremidade com

        'Verific se o usuário selecionado imprimir na modalidade de paisagem
        'se fizeram então nós precisamos de trocar parâmetros da altura/largura
        Se MyBase.DefaultPageSettings.Landscape então
            Tmp não ofuscante como o inteiro
            tmp = printHeight
            printHeight = printWidth
            printWidth = tmp
        Terminar se

        'Agora nós precisamos de determinar o número de linhas total
        'nós estamos indo ser impressão
        numLines não ofuscantes como Int32 = CInt (printHeight/PrinterFont.Height)

        'Criar uma impressão do retângulo são para nosso original
        Escurecer o printArea como RectangleF novo (leftMargin, rightMargin, printWidth, o printHeight)

        'Usar a classe de StringFormat para a disposição do texto de nosso original
        Escurecer o formato como StringFormat novo (StringFormatFlags.LineLimit)
        o ~~~ de format.SetTabStops (0.0F, _tabStops                ) 'adiciona esta linha.

        'Caber tantos como caráteres como nós podemos na área de cópia      

        e.Graphics.MeasureString (_text. Substring (RemoveZeros (curChar)), PrinterFont, SizeF novo (printWidth, printHeight), formato, carvões animais, linhas)

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

        'Aumentar a contagem atual do carvão animal
        carvões animais curChar de +=

        'Detemine se há mais texto a imprimir, se
        'há dizer que a impressora lá é de vinda
        Se curChar  <>
    Função do ''' para substituir dentro alguns zero o tamanho a um 1
    O ''' zero sujará acima a área de impressão
    '''  
    Valor do ''' a verific
    '''  
    '''  
    Função pública RemoveZeros (valor de ByVal como o inteiro) como o inteiro
        'Verific o valor passado na função,
        'se o valor é um 0 (zero) então retornar um 1,
        'de outra maneira retorno que o valor passou dentro
        Selecionar o valor do caso
            Caso 0
                Retorno 1
            Caso mais
                Valor do retorno
        Extremidade seleta
    Função do fim
Região do #End

Classe da extremidade
Outras soluções  
 
programming4us programming4us