wuolfit (Normal User)
Pro
Messaggi: 100
Iscritto: 19/07/2011
|
Salve a tutti,
è da un pò che mi arrovello il cervello con le stampe, ma quello che stò cercando di fare è trovare una soluzione funzionale e comoda....e mi è venuto in mente perché non usare le opendialog? l'idea mi parve buona e facile da realizzare ma con l'inconveniente che non fa ciò che vorrei, cioé è vero che stampa, ma la pagina è bianca, qui sotto riporto il codice :
Codice sorgente - presumibilmente VB.NET |
Private Sub btnSfogliaStampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfogliaStampa.Click OpenFileDialog1.Title = "Sfoglia e Stampa" If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then PrintDocument1.PrinterSettings.PrinterName = "nomestampante" PrintDocument1.Print() Else Exit Sub End If End Sub
|
Potreste aiutarmi a capire dov'è l'errore per favore???? Grazie mille
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
|
|
wuolfit (Normal User)
Pro
Messaggi: 100
Iscritto: 19/07/2011
|
avevo trovato qualcosa di simile a questo :
Codice sorgente - presumibilmente C# / VB.NET |
Dim P As New Process
P.StartInfo.FileName = "file da stampare"
P.StartInfo.Verb = "Print"
P.Start()
|
Sempre in questo forum e sempre scritto da te ma mancava tutta l'altra roba :-)
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Non mancava niente in quel codice. Sono due modi totalmente diversi di stampare. Quello che stai usando tu è il più lungo ma anche quello meno dipendente dalla macchina su cui gira. Le mie quattro righe di codice sono un metodo molto veloce e sbrigativo per stampare un singolo file, posto che l'estensione di tale file sia associata a un programma in grado di stamparla. Stampare un file con la classe Process non ha bisogno di PrintDialog né altra roba perché la stampa viene delegata interamente a un programma esterno su cui non hai controllo.
|
|
wuolfit (Normal User)
Pro
Messaggi: 100
Iscritto: 19/07/2011
|
mmmmm Totem fammi vedere se ho capito bene quindi per favore correggimi se sbaglio, in altre parole tu mi stai dicendo che usando le tue 4 righe di codice, se volessi stampare il file esempio.doc, il programma mi aprirebbe word e poi io da word dovrei lanciare la stampa giusto???? Anche perché se io le vado ad utilizzare nel mio programma è questo l'effetto che ottengo, ma quello che io voglio è, che il processo di stampa parta da solo, allora ho pensato se con le righe di codice scritte da Totem riesco ad aprire il file aggiungendo qualcosa dovrei anche stamparlo in automatico e quindi ho pensato di scrivere questo :
Codice sorgente - presumibilmente VB.NET |
Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click Dim printp As New Process OpenFileDialog1.Title = "Sfoglia e Stampa" If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then file = OpenFileDialog1. FileName() PrintDocument1.PrinterSettings.PrinterName = "nomestampante" printp. StartInfo. FileName = file printp.StartInfo.Verb = "Print" printp.Start() PrintDocument1.Print() Else Exit Sub End If End Sub
|
Il problema è che dalla stampante esce il foglio interamente bianco, ma in teoria a PrintDocumet1 non viene detto qual'è il file da stampare dal comando printp.StartInfo.FileName = file???? Se così non fosse come faccio a dire a PrintDocument1 qual'è il file che deve mandare in stampa???? Grazie per l'aiuto
Ultima modifica effettuata da wuolfit il 06/09/2011 alle 16:48 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
No, non fare di testa tua. Se ti dico che usando Process non puoi e non devi usare niente altro, allora perché lo fai? E' evidente che stai andando alla cieca. Ti ho già postato una risposta in cui spiego cosa fa il metodo PrintDocument.Print(), ti ho postato un link alla mia guida che mostra dettagliatamente come stampare usando la classe Graphics, ti ho ribadito che la classe Process delega la stampa a un altro programma e nonostante tutto ciò continui a perseverare in una via che è palesemente sbagliata. Infatti, come farebbe printp a dire a PrintDocument1 qual è il file da stampare? Per magia? C'è qualche punto del codice in cui compaiano nella stessa istruzione sia PrintDocument1 che printp? No. E allora come fanno a comunicare? Ovvio che non possono. E non possono perché sono due tecniche diverse che ti ho già abbondantemente illustrato. Scegliene una e usa quella.
|
|
wuolfit (Normal User)
Pro
Messaggi: 100
Iscritto: 19/07/2011
|
Ho capito grazie Totem, comunque ho una perplessità, se uso solo le tue 4 righe di codice come da te descritto, cioè ad esempio gli dico da codice qual'è il file da aprire, mi apre il programma preposto alla lettura del file e poi mi fa la stampa con la stampante predefinita, ma se provo a dargli il file in questa maniera
Codice sorgente - presumibilmente VB.NET |
Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click Dim printp As New Process OpenFileDialog1.Title = "Sfoglia e Stampa" If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then file = OpenFileDialog1. FileName() printp. StartInfo. FileName = file printp.StartInfo.Verb = "Print" printp.Start()
|
mi apre sempre il file il programma preposto ma non avvia il processo di stampa. Come mai????
Ultima modifica effettuata da wuolfit il 08/09/2011 alle 10:36 |
|
wuolfit (Normal User)
Pro
Messaggi: 100
Iscritto: 19/07/2011
|
Scusa Totem correggo ciò che ho detto prima, mi stampa in ogni caso, cioè sia che indico il file scrivendolo da sorgente che selezionandolo grazie ad un OpenFileDialog, però c'è una cosa che non fà cioé stampare le immagini, ne conosci il motivo????
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Come ti ho già ribadito più volte, se non esiste un programma adatto alla stampa associato a quel tipo di file, non puoi stamparla. Se nel registro di sistema non esiste la voce print allora anche se il programma c'è, comunque il file non verrà stampato.
D'altro canto, è molto semplice stampare le immagini con l'altro metodo.
|
|