Vedi il problema è uno: che all'università e nella teoria si fanno sempre esempi inutili tipo "classe rettangolo eredita da classe poligono" poi quando si arriva a fare le cose concrete non sempre è facile applicare le nozioni.
Soprattutto se uno è uno zuccone come me.
Te mi hai detto "fai una classe BrowserBase coi suoi metodi che poi verranno ereditati ed eventualmente riscritti dalle 2 classi Browser_multi_monitor e Browser_monitor_unico"
"Figata, non ci avevo pensato " mi sono detto.
Dopo ore che non riesco a buttar giù nulla di concreto sono di nuovo da te con la coda fra le gambe a chiedere aiuto soprattutto perchè un conto è eriditare la classe "uomo" dalla classe "mammiferi" mentre un altro è dover lavorare con la casella di testo xxx e con il pulsante yyy.
Ah, altra cosa: io ero sempre stato abituato a ragionare in Java e non in vb.net ed inoltre in java non ho praticamente mai usato le interfaccie grafiche.
Allora sto benedetto form è abbastanza semplice
Ha un controllo webbrowser con i pulsanti per andare avanti/indietro/refresh/vai alla url/stampa.
C'è un Filesystemwatcher, ci sono delle txt da riempire e altri 5 pulsanti che fondamentalmente scrivono delle cose sulla banca dati.
Browser_monitor_unico ha una interfaccia a schede (una è quella col webbrowser, l'altra è quella "ricette" dove c'è una picturebox, un paio di tasti e un altro webbrowser) e un backgroundworker, altrimenti ci sono 2 form distinti "Browser_multi_monitor"(col webbrowser ma senza interfaccia a schede) e "ricette" che ha il backgroundworker
Esempio di codice di un tasto
Codice:
Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
Dim result As DialogResult = MessageBox.Show("Sei sicuro di voler chiudere correttamente la chiamata?", "Warning", MessageBoxButtons.YesNo)
If (result = DialogResult.Yes) Then
GL_sSessione.PStato = "CL"
Try
GL_sSessione.Update_Sessione()
GL_sSessione.Inserisci_Comando(GL_sSessione.PChiave, "CLS", DBNull.Value, DBNull.Value)
Catch ex As Exception
MsgBox("Si è verificato un errore durante la chiusura della sessione. Controllare la connessione sql. Grazie.")
Exit Sub
End Try
MsgBox("La chiamata n°" & GL_sSessione.PChiave & " è stata chiusa con successo")
Me.Close()
Menu_Iniziale.Show()
End If
End Sub
dove GL_sSessione è un oggetto della Classe Sessione dove sono memorizzate varie informazioni come la data, l'oggetto etc... che poi sono le cose da scrivere nelle varie txt di cui sopra.
Comincio: Provo a fare una nuova windows form (chiamiamola prova) che erediti da Browser_monitor_unico
Codice:
Public Class Prova
Inherits Browser_monitor_unico
End Class
Errore.
La classe base 'Browser_monitor_unico' specificata per la classe 'Prova' non può essere differente dalla classe base 'System.Windows.Forms.Form' di uno degli altri tipi parziali.
Applico la correzione "Cambiare la classe Prova per ereditare da Browser_monitor_unico"
Se provo ad andare nella progettazione mi da mille mila errori tra i quali il più frequente è "Riferimento a un oggetto non impostato su un'istanza di oggetto" e nello stack chiamate si fa riferimento alla seguente riga
txtSessione.Text = GL_sSessione.PChiave
dove GL_sSessione.PChiave è il metodo della classe Sessione che mi restituisce il valore "chiave"
GL_sSessione è dichiarata in un modulo chiamato "Costanti" ed è instanziata nella prima maschera dove l'utente fa login con il seguente codice
GL_sUser = New Utente(dr("Centro"), dr("Utente"), dr("Livello"), dr("Locale"))
dove dr è il dataread che va a leggere la tabella degli utenti.