Questione : Linguette di stampa in VB.NET

Using System.Drawing.Printing sto trasmettendo il soddisfare della casella di testo allo stampatore.  Tuttavia, sto perdendo le linguette all'interno della casella di testo.  Può chiunque fornirmi un certo metodo che permetterà le linguette?  Attualmente ottengono alimentari prima di printing.

Thanks.
class= del

Risposta : Linguette di stampa in VB.NET

Ciao, hbash,

Sì, quello è che cosa ho sperato di vedere.   Le aggiunte che richiedete sono relativamente poche.

Per dimostrare che cosa dovete fare, ho generato una forma semplice con un tasto ed ho aggiunto il vostro codice categoria iHandlePrinting ad esso.  Il codice dietro il tasto è essenzialmente lo stesso del vostro sottoprogramma di PrintDocument () ed è indicato nel seguente frammento.  Inoltre ho indicato la versione modificata del codice categoria iHandlePrinting.  Per renderlo facile trovare le linee commoventi, le ho contrassegnate con un commento che comincia con i caratteri “~~~„.

Vederete nel mio codice del campione per il tasto della forma che ho sostituito una stringa codificata dura per la vostra proprietà di TextBox.Text.  Per il vostro codice, rimuovere appena le linee con la stringa e il uncomment hardcoded la linea originale.  

Inoltre ho cambiato due linee nel codice categoria iHandlePrinting che non si riferiscono agli arresti di linguetta.  Ho contrassegnato questi con le osservazioni a cominciare dai caratteri “~~~*„.  Altamente suggerisco che utilizzate sia “l'opzione esplicita„ che “l'opzione rigorosa„ in tutta la vostra codificazione.  Il piccolo sforzo che supplementare richiede lo conserverà da molti problemi ed emicranie di codificazione misteriosi.

Oh ed appena come nota laterale, molti (forse maggior parte) di codificatori usano una convenzione di nomina dove la prima lettera del nome del vostro codice categoria iHandlePrinting potrebbe suggerire che questa sia un'interfaccia piuttosto che un codice categoria.  (Evidentemente, maiuscola “„ sono usato più frequentemente della lettera minuscola.)

Acclamazioni,
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:
Codice categoria pubblico Form1

    Il sommergibile riservato Button1_Click (mittente di ByVal come System.Object, ByVal e come System.EventArgs) tratta Button1.Click

        Lo strToPrint fioco come stringa = “qui è„ & vbTab & “stringa con il qualche„ & vbTab & _
                                   “ha incluso gli arresti di linguetta„ & vbTab & “e„ & vbCrLf & _
                                   vbTab & vbTab & “una nuova linea„ & vbTab & “ugualmente„

        M_printer fioco come nuovo iHandlePrinting

        m_printer.PrinterFont = nuova fonte (“corriere nuovo„, 9, FontStyle.Bold)

        'Codice R di invidia CONTRO

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

        'Regolare la proprietà di TextToPrint  
        m_printer.TextToPrint = il ~~~ del "" & del vbCrLf &                    dello strToPrint 'nel vostro codice, rimuovono questa linea
        ''' m_printer.TextToPrint = "" & vbCrLf & ~~~ e uncomment di Me.txt SelectedRecord.Text 'questa linea.

        'Regolare gli arresti di linguetta required.  Si noti che il ~~~ di ogni specifica della linguetta 'aggiunge le linee simili a.
        'è il contrappeso ~~~ da tabella                          precedente 'questo prima dell'invocazione
        sngaTabStops fiochi come singoli () = {100.0F, 150.0F, 300.0F}         '~~~ il metodo della stampa.
        m_printer.TabStops = ~~~                               degli sngaTabStops '

        'Fare funzionare l'ordine di stampa  
        m_printer. Stampa ()

    Sommergibile dell'estremità
Codice categoria dell'estremità

Importazioni System.Drawing
Importazioni System.Drawing.Printing

Codice categoria pubblico che iHandlePrinting: Eredita Printing.PrintDocument

#Region “variabili della proprietà„
    '''  
    Variabile della proprietà del ''' per la fonte che l'utente desidera usare
    '''  
    '''  
    _font riservato come fonte

    '''  
    La variabile della proprietà del ''' per il testo a be è stampata
    '''  
    '''  
    _text riservato come stringa

    I _tabStops riservati come singolo () = {0.0F}       '~~~ aggiungono questo allineamento.

Regione del #End

#Region “proprietà di codice categoria„

    I tabstop della proprietà pubblica () come singolo ()  '~~~ aggiungono questa proprietà.
        Ottenere                                 'il ~~~
            Restituire ~~~                dei _tabStops '
        L'estremità ottiene                             'il ~~~
        Insieme (valore di ByVal come singolo ())        '~~~
            _tabStops = ~~~               di valore '
        '~~~                             regolato estremità
    ~~~ della proprietà                            dell'estremità '

    '''  
    Proprietà del ''' per tenere il testo che deve essere stampato
    '''  
    '''  
    Stringa del ''' A
    '''  
    Proprietà pubblica TextToPrint () come stringa
        Ottenere
            Restituire il _text
        L'estremità ottiene
        Regolar (valore di ByVal come stringa)
            _text = valore
        Insieme dell'estremità
    Proprietà dell'estremità

    La funzione pubblica ShowPrintDialog () come '    tipo booleano del ~~~* dovrebbe essere dichiarata!
        ShowPrintDialog (me)
        Di ritorno allineare
    Concludere la funzione

    La funzione riservata ShowPrintDialog (myDocumentToPrint di ByRef come PrintDocument) come '    tipo booleano del ~~~* dovrebbe essere dichiarata!
        Psd fioco come nuovo PageSetupDialog

        Con psd
            .AllowMargins = allineano
            .AllowOrientation = allineano
            .AllowPaper = allineano
            .AllowPrinter = allineano
            .ShowHelp = allineano
            .ShowNetwork = allineano

            . Documento = myDocumentToPrint
        Estremità con
        psd.ShowDialog ()
        Di ritorno allineare
    Concludere la funzione

    '''  
    Proprietà del ''' per tenere la fonte che gli utenti desidera usare
    '''  
    '''  
    '''  
    '''  
    Proprietà pubblica PrinterFont () come fonte
        'Permette che l'utente ignori la fonte di difetto
        Ottenere
            Restituire il _font
        L'estremità ottiene
        Regolar (valore di ByVal come fonte)
            _font = valore
        Insieme dell'estremità
    Proprietà dell'estremità
Regione del #End

#Region “costruttori del codice categoria„
    '''  
    Costruttore vuoto del '''
    '''  
    '''  
    Nuovi secondari pubblici ()
        'Regolare il flusso della lima
        MyBase.New ()
        'Esemplificare fuori la proprietà del testo ad una stringa vuota
        _text = String.Empty
    Sommergibile dell'estremità

    '''  
    Costruttore del ''' per inizializzare il nostro oggetto di stampa
    ''' ed il testo che ha supposto per essere stampa
    '''  
    Testo del ''' che sarà stampato
    '''  
    Nuovo secondario pubblico (streptococco di ByVal come stringa)
        'Regolare il flusso della lima
        MyBase.New ()
        'Fissare il nostro valore di una proprietà del testo
        _text = streptococco
    Sommergibile dell'estremità
Regione del #End

#Region “OnBeginPrint„
    '''  
    Provvigione supplementare del ''' il metodo di OnBeginPrint di difetto dell'oggetto di PrintDocument
    '''  
    '''  
    '''  
    Protettivo ignora OnBeginPrint secondario (ByVal e come Printing.PrintEventArgs)
        'Fare funzionare il codice basso
        MyBase.OnBeginPrint (e)

        'Controllare per vedere se l'utente fornisse una fonte
        'se non facessero allora stabilizziamo a Times New Roman
        Se il _font allora è niente
            'Generare la fonte che abbiamo bisogno di
            _font = nuova fonte (“Times New Roman„, 10)
        Concluder se
    Concludere il sommergibile
Regione del #End

#Region “OnPrintPage„
    '''  
    Provvigione supplementare del ''' il metodo di OnPrintPage di difetto del PrintDocument
    '''  
    '''  
    Il ''' questo fornisce la logica della stampa per il nostro documento
    Protettivo ignora OnPrintPage secondario (ByVal e come Printing.PrintPageEventArgs)
        'Fare funzionare il codice basso
        MyBase.OnPrintPage (e)

        'Dichiarare le variabili locali state necessarie
        curChar statico come numero intero
        printHeight fioco come numero intero
        printWidth fioco come numero intero
        leftMargin fioco come numero intero
        rightMargin fioco come numero intero
        Linee fioche come Int32
        Oscurare i carboni come Int32

        'Regolare il formato ed i margini di zona di stampa
        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
        Estremità con

        'Controllare se l'utente selezionato stampare nel modo di paesaggio
        'se facessero allora dobbiamo scambiare i parametri larghezza/di altezza
        Se MyBase.DefaultPageSettings.Landscape allora
            Tmp fioco come numero intero
            tmp = printHeight
            printHeight = printWidth
            printWidth = tmp
        Concluder se

        'Ora dobbiamo determinare il numero delle linee totale
        'stiamo andando essere stampa
        numLines fiochi come Int32 = CInt (printHeight/PrinterFont.Height)

        'Generare una stampa di rettangolo sono per il nostro documento
        Oscurare il printArea come nuovo RectangleF (leftMargin, rightMargin, printWidth, printHeight)

        'Usare il codice categoria di StringFormat per la disposizione del testo del nostro documento
        Oscurare la disposizione come nuovo StringFormat (StringFormatFlags.LineLimit)
        il ~~~ di format.SetTabStops (0.0F, _tabStops                ) 'aggiunge questa linea.

        'Misura altretanti caratteri come possiamo nella zona di stampa      

        e.Graphics.MeasureString (_text. Sottostringa (RemoveZeros (curChar)), PrinterFont, nuovo SizeF (printWidth, printHeight), disposizione, carboni, linee)

        'Stampare la pagina
        e.Graphics.DrawString (_text. Sottostringa (RemoveZeros (curChar)), PrinterFont, Brushes.Black, printArea, disposizione)

        'Aumentare il conteggio corrente del carbone
        carboni curChar di +=

        'Detemine se ci è più testo da stampare, se
        'ci è il dire che lo stampatore là è venente
        Se curChar  <>
    Funzione del ''' per sostituire qualsiasi zeri dentro il formato ad un 1
    Il ''' zero scompiglierà in su la zona di stampa
    '''  
    Valore del ''' da controllare
    '''  
    '''  
    Funzione pubblica RemoveZeros (valore di ByVal come numero intero) come numero intero
        'Controllare il valore passato nella funzione,
        'se il valore è un 0 (zero) allora restituire un 1,
        'al contrario ritorno che il valore è passato dentro
        Selezionare il valore di caso
            Caso 0
                Ritorno 1
            Caso altrimenti
                Valore di ritorno
        Estremità prescelta
    Funzione di conclusione
Regione del #End

Codice categoria dell'estremità
Altre soluzioni  
 
programming4us programming4us