Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - riuscire a leggere un pulsante più volte in una form
Forum - C# / VB.NET - riuscire a leggere un pulsante più volte in una form

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 9:04
Sabato, 30/10/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

  1. Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click
  2.         Select Case i
  3.             Case 0, 1
  4.                 Label1.Text = Spec(j)
  5.                 Specia = True
  6.                 men = False
  7.                 If a = True Then
  8.                     If j <= 3 Then
  9.                         Label1.Text = Classi(k)
  10.                         clas = True
  11.                         Specia = False
  12.                     End If
  13.                 End If
  14.                 If b = True Then
  15.                     clas = False
  16.                     If k = 0 Then
  17.                         If ele = False Then
  18.                             Label1.Text = Prime(l)
  19.                             inf = True
  20.                         End If
  21.                         If inf = False Then
  22.                             Label1.Text = Prime(l)
  23.                             ele = True
  24.  
  25.                         End If
  26.                     End If
  27.                 End If
  28.         End Select
  29.     End Sub


gli incrementi degli indici li faccio in altre 2 bottoni, avanti e indietro

ekko:
Indietro:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
  2.         If men = True Then   'controllo primo menu per de-incremento indice
  3.             If i > 0 Then
  4.                 i = i - 1
  5.                 Label1.Text = Menu(i)
  6.             End If
  7.         End If
  8.         If Specia = True Then  'secondo menu scelta specializzaizione
  9.             a = True
  10.             If j > 0 Then
  11.                 j = j - 1
  12.                 Label1.Text = Spec(j)
  13.             End If
  14.         End If
  15.         If clas = True Then   'scelta classe
  16.             b = True
  17.             If k > 0 Then
  18.                 k = k - 1
  19.                 Label1.Text = Classi(k)
  20.             End If
  21.         End If
  22.         If l > 0 Then
  23.             If inf = True Then
  24.                 l = l - 1
  25.                 Label1.Text = Prime(l)
  26.             End If
  27.             If ele = True Then
  28.                 l = l - 1
  29.                 Label1.Text = Prime(l)
  30.             End If
  31.         End If
  32.     End Sub


Avanti:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox5.Click
  2.         If men = True Then
  3.             If i < 1 Then
  4.                 i = i + 1
  5.                 Label1.Text = Menu(i)
  6.             End If
  7.         End If
  8.         If Specia = True Then
  9.             a = True
  10.             If j < 3 Then
  11.                 j = j + 1
  12.                 Label1.Text = Spec(j)
  13.             End If
  14.         End If
  15.         If clas = True Then
  16.             b = True
  17.             If k < 4 Then
  18.                 k = k + 1
  19.                 Label1.Text = Classi(k)
  20.             End If
  21.         End If
  22.  
  23.         If l < 9 Then
  24.             If inf = True Then
  25.                 l = l + 1
  26.                 Label1.Text = Prime(l)
  27.             End If
  28.             If ele = True Then
  29.                 Label1.Text = Prime(l)
  30.                 If l >= 1 Then
  31.                     l = 1
  32.                 End If
  33.             Else
  34.                 l = l + 1
  35.             End If
  36.  
  37.         End If
  38.     End Sub


Ultima modifica effettuata da carmine il 30/10/2010 alle 9:06
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 10:43
Sabato, 30/10/2010
1) non ho capito cosa vuoi fare
2) nel codice che mostri usi delle variabili (i, j, etc...) che non si capisce cosa siano

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:18
Sabato, 30/10/2010
Cosa significa "leggere un pulsante"? E di quali sottomenu parli? Forse l'elemento selezionato di ogni menu corrisponde a un indice diverso?

PM
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 11:36
Sabato, 30/10/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

  1. 'inizializzazione dei vettori all'avvio del form
  2.     Private Sub Home_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
  3.         Menu(0) = "RICEVIMENTO DOCENTI"
  4.         Menu(1) = "ORARIO CLASSI"
  5.         Spec(0) = "INFORMATICA"
  6.         Spec(1) = "ELETTROTECNICA"
  7.         Spec(2) = "BIOTECNOLOGIA"
  8.         Spec(3) = "GRAFICA"
  9.         Classi(0) = "PRIME"
  10.         Classi(1) = "SECONDE"
  11.         Classi(2) = "TERZE"
  12.         Classi(3) = "QUARTE"
  13.         Classi(4) = "QUINTE"
  14.         Prime(0) = "1A"
  15.         Prime(1) = "1B"
  16.         Prime(2) = "1C"
  17.         Prime(3) = "1D"
  18.         Prime(4) = "1E"
  19.         Prime(5) = "1F"
  20.         Prime(6) = "1G"
  21.         Prime(7) = "1H"
  22.         Prime(8) = "1I"
  23.         Prime(9) = "1L"
  24.         i = 0
  25.         j = 0
  26.         k = 0
  27.         l = 0
  28.         el = 0
  29.         Me.BackgroundImage = My.Resources.back2
  30.         Label1.Text = Menu(i)
  31.         men = True
  32.         Specia = False
  33.         clas = False
  34.         a = False
  35.         b = False
  36.         inf = False
  37.         ele = False
  38.     End Sub


Ultima modifica effettuata da carmine il 30/10/2010 alle 11:38
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:53
Sabato, 30/10/2010
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

  1. Dim D As New Dictionary(Of String, String())
  2. D.Add("Menu iniziale", New String() {"Ricevimento docenti", "Orario classi"})
  3. D.Add("Ricevimento docenti", New String() {"Informatica", "Elettrotecnica", ...})
  4. '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

  1. Dim D As Dictionary(Of String, String())
  2. Dim i As Int32 = 0
  3. Dim CurrentMenu As String
  4.  
  5. '...
  6.  
  7. Sub Avanti()
  8.    i += 1
  9.    If i > D(CurrentMenu).Length - 1 Then
  10.       i = D(CurrentMenu).Length -1
  11.    End If
  12.    Label1.Text = D(CurrentMenu)(i)
  13. End Sub
  14.  
  15. 'Sub Indietro ...
  16.  
  17. Sub OK()
  18.    If D.ContainsKey(D(CurrentMenu)(i)) Then
  19.       CurrentMenu = D(CurrentMenu)(i)
  20.       i = 0
  21.       Label1.Text = D(CurrentMenu)(i)
  22.    Else
  23.       'azione specifica per una voce del menu
  24.    End If
  25. End Sub


PM
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 8:04
Domenica, 31/10/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
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:04
Domenica, 31/10/2010
Se non inizializzi il dictionary, ovviamente ti darà quell'eccezione. Nel codice è solo dichiarato, manca il new.

P.S.: "aggiunzione"? Ma stiamo scherzando?

PM
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 15:09
Domenica, 31/10/2010
Codice sorgente - presumibilmente VB.NET

  1. Dim D As Dictionary(Of String, String())
  2.     'inizializzazione dei vettori all'avvio del form
  3.     Private Sub nuovo()
  4.        
  5.     End Sub
  6.  
  7.     Private Sub Home_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
  8.         With D
  9.             .Add("MENU", New String() {"RICEVIMENTO DOCENTI", "ORARIO CLASSI"})
  10.             .Add("RICEVIMENTO DOCENTI", New String() {"INFORMATICA", "ELETTROTECNICA", "BIOTECNOLOGIA", "GRAFICA"})
  11.         End With
  12.     End Sub



sorry per il termine andavo veloce e ho scritto la prima cosa ke mi è venuta! ihihi

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:15
Domenica, 31/10/2010
Appunto, manca D = New Dictionary(...).

PM
Pagine: [ 1 2 ] Precedente | Prossimo