Oppure

Loading
02/09/11 9:18
wuolfit
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 :

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
aaa
02/09/11 9:56
Il Totem
Se ti fossi documentato prima di postare 20 post uguali, sapresti che Print() non fa altro che invocare una serie di eventi PrintPage che devono essere gestiti dal programmatore:
totemslair.org/guide/…
aaa
02/09/11 10:08
wuolfit
avevo trovato qualcosa di simile a questo :

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 :-)
aaa
04/09/11 12:16
Il Totem
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.
aaa
06/09/11 14:33
wuolfit
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 :

Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click
        Dim printp As New Process
        Dim file As String
        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 06/09/11 14:48
aaa
07/09/11 10:54
Il Totem
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.
aaa
08/09/11 8:08
wuolfit
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

Private Sub btnSfoglia&Stampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSfoglia&Stampa.Click
        Dim printp As New Process
        Dim file As String
        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 08/09/11 8:36
aaa
08/09/11 10:06
wuolfit
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????
aaa