carmine (Member)
Pro
Messaggi: 168
Iscritto: 20/04/2010
|
Questo topic è stato chiuso dal moderatore ragazzi per un progetto a scuola devo riuscire a leggere un bottone OK, cambiando ogni volta il testo di una label, nella stessa form, come faccio? ho provato con un case e per i primi menu funziona poi quando si va ai sottomenu nn funz...
ho usato variabili booleane e controlli ora posto il codice:
Codice sorgente - presumibilmente VB.NET |
Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click Select Case i Case 0, 1 Label1.Text = Spec(j) Specia = True men = False If a = True Then If j <= 3 Then Label1.Text = Classi(k) clas = True Specia = False End If End If If b = True Then clas = False If k = 0 Then If ele = False Then Label1.Text = Prime(l) inf = True End If If inf = False Then Label1.Text = Prime(l) ele = True End If End If End If End Select End Sub
|
gli incrementi degli indici li faccio in altre 2 bottoni, avanti e indietro
ekko:
Indietro:
Codice sorgente - presumibilmente VB.NET |
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click If men = True Then 'controllo primo menu per de-incremento indice If i > 0 Then i = i - 1 Label1.Text = Menu(i) End If End If If Specia = True Then 'secondo menu scelta specializzaizione a = True If j > 0 Then j = j - 1 Label1.Text = Spec(j) End If End If If clas = True Then 'scelta classe b = True If k > 0 Then k = k - 1 Label1.Text = Classi(k) End If End If If l > 0 Then If inf = True Then l = l - 1 Label1.Text = Prime(l) End If If ele = True Then l = l - 1 Label1.Text = Prime(l) End If End If End Sub
|
Avanti:
Codice sorgente - presumibilmente VB.NET |
Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click If men = True Then If i < 1 Then i = i + 1 Label1.Text = Menu(i) End If End If If Specia = True Then a = True If j < 3 Then j = j + 1 Label1.Text = Spec(j) End If End If If clas = True Then b = True If k < 4 Then k = k + 1 Label1.Text = Classi(k) End If End If If l < 9 Then If inf = True Then l = l + 1 Label1.Text = Prime(l) End If If ele = True Then Label1.Text = Prime(l) If l >= 1 Then l = 1 End If Else l = l + 1 End If End If End Sub
|
Ultima modifica effettuata da carmine il 30/10/2010 alle 9:06 |
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
1) non ho capito cosa vuoi fare
2) nel codice che mostri usi delle variabili (i, j, etc...) che non si capisce cosa siano
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Cosa significa "leggere un pulsante"? E di quali sottomenu parli? Forse l'elemento selezionato di ogni menu corrisponde a un indice diverso?
|
|
carmine (Member)
Pro
Messaggi: 168
Iscritto: 20/04/2010
|
vi presento il programma come è strutturato:
label1
btn(Indietro) btn(OK) btn (Avanti)
il programma gestisce l'orario di ricevimento dei docenti e l'orario delle classi!
questi sono i primi testi ke avrà la label!
quindi apparirà:
ricevimento docenti
indietro ok avanti
se clicco avanti mi uscirà "orario classi"
se premo ok la label mi mostrerà tutte le specializzazioni
con la stessa procedura di avanti e indietro, e se premo OK mi mostrerà quale classe tra prima seconda terza quarta e quinta dopo di ke le singole classi
ho creato degli array di stringhe ad esempio Classi ("PRIME", "SECONDE" ecc..)
Specializzazioni("INFORMATICA", "ELETTROTECNICA" ecc..)
quindi tutto il prog è centrato nelle funzioni OK AVANTI E INDIETRO!
gli indici mi fanno capire dove sono arrivato a quale menu!
Codice sorgente - presumibilmente VB.NET |
'inizializzazione dei vettori all'avvio del form Private Sub Home_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated Menu(0) = "RICEVIMENTO DOCENTI" Menu(1) = "ORARIO CLASSI" Spec(0) = "INFORMATICA" Spec(1) = "ELETTROTECNICA" Spec(2) = "BIOTECNOLOGIA" Spec(3) = "GRAFICA" Classi(0) = "PRIME" Classi(1) = "SECONDE" Classi(2) = "TERZE" Classi(3) = "QUARTE" Classi(4) = "QUINTE" Prime(0) = "1A" Prime(1) = "1B" Prime(2) = "1C" Prime(3) = "1D" Prime(4) = "1E" Prime(5) = "1F" Prime(6) = "1G" Prime(7) = "1H" Prime(8) = "1I" Prime(9) = "1L" i = 0 j = 0 k = 0 l = 0 el = 0 Me.BackgroundImage = My.Resources.back2 Label1.Text = Menu(i) men = True Specia = False clas = False a = False b = False inf = False ele = False End Sub
|
Ultima modifica effettuata da carmine il 30/10/2010 alle 11:38 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Così è chiaro, se si leggesse il regolamento non ci sarebbe bisogno di chiedere ogni volta ulteriori informazioni.
Senza guardare il codice, posso dirti che molto probabilmente hai fatto un pastrocchio con le variabili booleane, quindi il mio consiglio è di creare un dizionario. Ogni riga dell dizionario contiene gli elementi di un sotto menu; spostandosi di chiave in chiave si passa ai menu successivi. Ad esempio:
Codice sorgente - presumibilmente VB.NET |
D.Add("Menu iniziale", New String() {"Ricevimento docenti", "Orario classi"}) D.Add("Ricevimento docenti", New String() {"Informatica", "Elettrotecnica", ...}) 'Eccetera...
|
Così puoi accedere ad ogni elemento semplicemente avendo due dati: CurrentMenu, il nome del menu attuale, e i l'indice dell'elemento in questo menu.
In questo caso, il pulsante indietro semplicemente diminuisce i di 1, mentre avanti aumenta i di 1. Il pulsante Ok imposta CurrentMenu = D(CurrentMenu, i).
Codice sorgente - presumibilmente VB.NET |
Dim i As Int32 = 0 Dim CurrentMenu As String '... Sub Avanti() i += 1 If i > D(CurrentMenu).Length - 1 Then i = D(CurrentMenu).Length -1 End If Label1.Text = D(CurrentMenu)(i) End Sub 'Sub Indietro ... Sub OK() If D.ContainsKey(D(CurrentMenu)(i)) Then CurrentMenu = D(CurrentMenu)(i) i = 0 Label1.Text = D(CurrentMenu)(i) Else 'azione specifica per una voce del menu End If End Sub
|
|
|
carmine (Member)
Pro
Messaggi: 168
Iscritto: 20/04/2010
|
mi dici in che funzione devono stare l'aggiunzione dell'elemento (d.ADD) mi da errore di (Riferimento a un oggetto non impostato su un'istanza di oggetto.)
ed inizialmente la label deve contenere il valore di d(corr)(0)?
cioè d("ricevimento docenti")(0)
Ultima modifica effettuata da carmine il 31/10/2010 alle 8:11 |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Se non inizializzi il dictionary, ovviamente ti darà quell'eccezione. Nel codice è solo dichiarato, manca il new.
P.S.: "aggiunzione"? Ma stiamo scherzando?
|
|
carmine (Member)
Pro
Messaggi: 168
Iscritto: 20/04/2010
|
Codice sorgente - presumibilmente VB.NET |
'inizializzazione dei vettori all'avvio del form Private Sub nuovo() End Sub Private Sub Home_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated With D .Add("MENU", New String() {"RICEVIMENTO DOCENTI", "ORARIO CLASSI"}) .Add("RICEVIMENTO DOCENTI", New String() {"INFORMATICA", "ELETTROTECNICA", "BIOTECNOLOGIA", "GRAFICA"}) End With End Sub
|
sorry per il termine andavo veloce e ho scritto la prima cosa ke mi è venuta! ihihi
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Appunto, manca D = New Dictionary(...).
|
|