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 - Problemi con ListBox e CheckBox
Forum - C# / VB.NET - Problemi con ListBox e CheckBox

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Nick_79 (Normal User)
Newbie


Messaggi: 6
Iscritto: 09/09/2014

Segnala al moderatore
Postato alle 14:02
Giovedė, 11/09/2014
Salve,

Ho iniziato a scrivere un programma in VB.NET riguardante la gestione degli iscritti ad una Gimkana Automobilistica.
In sintesi il mio programma prevede una suddivisione in Tab Control, in ogni Tab ho la gestione di un argomento, es.:
nella prima Tab, ho la registrazione dei dati (Nome, Cognome, indirizzo, mail, ecc.) riguardanti gli iscritti, concludendo l'inserimento di tutti gli iscritti, passo in automatico alla seconda tab, dove visualizzo in un DataGridView tutti i dati per ogni iscritto, e volendo posso salvare la tabella in un file Excel.
Nella terza Tab, tramite un Button, richiamo in un nuovo DataGridView solo alcuni dati importanti dei concorrenti (Nome, Cognome, Classe, Tipo di Auto), ed aggiungo manualmente nella tabella i vari numeri di gara dei concorrenti; inoltre inserisco il numero totale delle manche da svolgere.
I problemi sorgono nella quarta Tab, dove popolo una ListBox con il nome e cognome di tutti i concorrenti.
Cliccando su ogni concorrente ho affianco alla List Box la visualizzazione del numero di gara, del Nome e Cognome e del tipo di Auto (Questa Funziona!!!),
poi ho delle Text Box dove gestisco l'inserimento del Tempo impiegato per compiere un giro del precorso e del numero di birilli abbattuti come penalitā.
Sia il tempo sia il numero di birilli, vengono poi trasformati in punteggio secondo un regolamento.
Ho inoltre delle Check Box che se selezionate vanno ad incrementare questo punteggio in base a delle penalitā costanti.
Un Problema č questo:
-Inserisco il tempo ed il numero di birilli, ma devo cliccare di nuovo sul concorrente perché mi vengano aggiornate le label che mi visualizzano il tempo inserito, il punteggio corrispondente hai birilli abbattuti, il punteggio totale delle sole penalitā ed il punteggio totale del tempo + le penalitā.

Codice sorgente - presumibilmente VB.NET

  1. Private Sub LstBoxSelConc_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstBoxSelConc.SelectedIndexChanged
  2.         Dim i As Integer
  3.  
  4.         i = LstBoxSelConc.SelectedIndex
  5.  
  6.         'Visualizzazione dei dati principali del Concorrente selezionato
  7.         LblNumConcSel.Text = DataGridView2.Rows(i).Cells(0).Value           'Numero di Gara
  8.         LblNomeConcSel.Text = LstBoxSelConc.SelectedItem.ToString()         'Nome e Cognome
  9.         LblAutoConcSel.Text = DataGridView2.Rows(i).Cells(4).Value          'Auto
  10.  
  11.         If RBtnRITIRATO.Checked = False Then
  12.             Default_InGara()
  13.             'Richiama la Funzione di inserimento tempi e penalitā
  14.             InsTempi_Penalitā()
  15.         Else
  16.             Default_Ritirato()
  17.         End If
  18.     End Sub
  19.  
  20.  'Funzione inserimento Tempi e Penalitā
  21.  
  22.     Sub InsTempi_Penalitā()
  23.         Dim T As Tempo
  24.  
  25.             'Inserimento del Tempo di Manche
  26.             T.Min = Val(TxtBoxMin.Text)
  27.             T.Sec = Val(TxtBoxSec.Text)
  28.             T.Dec = Val(TxtBoxDec.Text)
  29.  
  30.             Controlla_Tempo(T)
  31.  
  32.             'Conversione del Tempo in Punti
  33.             LblPuntiTempo.Text = Converti_Tempo(T)
  34.  
  35.             'Inserimento Penalitā Birilli
  36.             NBirilli = Val(TxtBoxPenalitā.Text)
  37.             LblPuntiBir.Text = NBirilli * PenalitāBirillo
  38.  
  39.             LblTotPNTPen.Text = Val(LblPuntiBir.Text) + Altre_Penalitā()
  40.             LblTotPNTTemp.Text = Val(LblTotPNTPen.Text) + Val(LblPuntiTempo.Text)
  41.     End Sub



Altro Problema:
- Ho creato una funzione (Altre_Penalitā), che in base alla selezione della Check Box mi da un totale delle penalitā costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va

Codice sorgente - presumibilmente VB.NET

  1. 'Inserimento Altre Penalitā
  2.  
  3.     Function Altre_Penalitā() As Integer
  4.         Dim SommaPen As Integer = 0
  5.  
  6.         If ChBoxPenPartAnt.CheckState = True Then
  7.             Return SommaPen = PenalitāPartAnt
  8.         ElseIf ChBoxPenJmpTrack.CheckState = True Then
  9.             Return SommaPen = PenalitāJmpTrack
  10.         ElseIf ChBoxPenBirillone.CheckState = True Then
  11.             Return SommaPen = PenalitāBirillone
  12.         ElseIf ChBoxPenMedia.CheckState = True Then
  13.             Return SommaPen = PenalitāMedia
  14.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True Then
  15.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack
  16.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True Then
  17.             Return SommaPen = PenalitāPartAnt + PenalitāBirillone
  18.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenMedia.CheckState = True Then
  19.             Return SommaPen = PenalitāPartAnt + PenalitāMedia
  20.         ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
  21.             Return SommaPen = PenalitāJmpTrack + PenalitāBirillone
  22.         ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
  23.             Return SommaPen = PenalitāJmpTrack + PenalitāMedia
  24.         ElseIf ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  25.             Return SommaPen = PenalitāBirillone + PenalitāMedia
  26.         ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  27.             Return SommaPen = PenalitāJmpTrack + PenalitāBirillone + PenalitāMedia
  28.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  29.             Return SommaPen = PenalitāPartAnt + PenalitāBirillone + PenalitāMedia
  30.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
  31.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack + PenalitāMedia
  32.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
  33.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack + PenalitāBirillone
  34.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  35.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack + PenalitāBirillone + PenalitāMedia
  36.         Else
  37.             Return 0
  38.         End If
  39.         MsgBox(SommaPen)
  40.     End Function



Poi vi chiederei anche un consiglio:
devo continuare il programma con altre Tab, per la gestione delle classifiche di manche, delle classifiche di classe e per la classifica assoluta, come mi consigliate di memorizzare i dati relativi ad ogni concorrente (i dati sono: Numero di Gara, Nome e Cognome, Classe, Auto, Numero di Manche, Tempo di Manche, Numero di Birilli, ed i punteggi visti sopra riguardanti le penalitā)?


Nick
PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 19:27
Giovedė, 11/09/2014
Altro Problema:
- Ho creato una funzione (Altre_Penalitā), che in base alla selezione della Check Box mi da un totale delle penalitā costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va



non mi va č troppo generico, dovresti specificare che errori rileva



If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Nick_79 (Normal User)
Newbie


Messaggi: 6
Iscritto: 09/09/2014

Segnala al moderatore
Postato alle 9:56
Venerdė, 12/09/2014
Testo quotato

Postato originariamente da Ultimo:

Altro Problema:
- Ho creato una funzione (Altre_Penalitā), che in base alla selezione della Check Box mi da un totale delle penalitā costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va



non mi va č troppo generico, dovresti specificare che errori rileva




Non rileva nessun problema, sembra che non mi entri proprio nella funzione...non so se ho sbagliato la dichiarazione, il richiamo (si vede nel primo listato di codice che ho inviato), o se č sbagliato l'utilizzo del Check Box.
Perché se mi entrasse nella funzione dovrebbe comunque farmi comparire il msgbox(SommaPen) che ho messo appunto come controllo.
E per il primo problema qualche idea su come posso risolverlo?


Nick
PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 11:42
Venerdė, 12/09/2014
Testo quotato

Postato originariamente da Nick_79:

Testo quotato

Postato originariamente da Ultimo:

Altro Problema:
- Ho creato una funzione (Altre_Penalitā), che in base alla selezione della Check Box mi da un totale delle penalitā costanti,
ma non funziona non so cosa sbaglio, volevo usare il Select Case ma anche quello non mi va



non mi va č troppo generico, dovresti specificare che errori rileva




Non rileva nessun problema, sembra che non mi entri proprio nella funzione...non so se ho sbagliato la dichiarazione, il richiamo (si vede nel primo listato di codice che ho inviato), o se č sbagliato l'utilizzo del Check Box.
Perché se mi entrasse nella funzione dovrebbe comunque farmi comparire il msgbox(SommaPen) che ho messo appunto come controllo.
E per il primo problema qualche idea su come posso risolverlo?




il msgbox non compare perchč ad ogni "Return" la funzione esce e ti ritorna un risultato, che dovrebbe essere
un array di integer o un integer





If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
vankraster (Member)
Rookie


Messaggi: 32
Iscritto: 05/11/2010

Segnala al moderatore
Postato alle 12:16
Venerdė, 12/09/2014
Testo quotato

Postato originariamente da Nick_79:
Codice sorgente - presumibilmente VB.NET

  1. Function Altre_Penalitā() As Integer
  2.         Dim SommaPen As Integer = 0
  3.  
  4.         If ChBoxPenPartAnt.CheckState = True Then
  5.             Return SommaPen = PenalitāPartAnt
  6.         ElseIf ChBoxPenJmpTrack.CheckState = True Then
  7.             Return SommaPen = PenalitāJmpTrack
  8.         ElseIf ChBoxPenBirillone.CheckState = True Then
  9.             Return SommaPen = PenalitāBirillone
  10.         ElseIf ChBoxPenMedia.CheckState = True Then
  11.             Return SommaPen = PenalitāMedia
  12.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True Then
  13.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack
  14.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True Then
  15.             Return SommaPen = PenalitāPartAnt + PenalitāBirillone
  16.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenMedia.CheckState = True Then
  17.             Return SommaPen = PenalitāPartAnt + PenalitāMedia
  18.         ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
  19.             Return SommaPen = PenalitāJmpTrack + PenalitāBirillone
  20.         ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
  21.             Return SommaPen = PenalitāJmpTrack + PenalitāMedia
  22.         ElseIf ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  23.             Return SommaPen = PenalitāBirillone + PenalitāMedia
  24.         ElseIf ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  25.             Return SommaPen = PenalitāJmpTrack + PenalitāBirillone + PenalitāMedia
  26.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  27.             Return SommaPen = PenalitāPartAnt + PenalitāBirillone + PenalitāMedia
  28.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenMedia.CheckState = True Then
  29.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack + PenalitāMedia
  30.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True Then
  31.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack + PenalitāBirillone
  32.         ElseIf ChBoxPenPartAnt.CheckState = True And ChBoxPenJmpTrack.CheckState = True And ChBoxPenBirillone.CheckState = True And ChBoxPenMedia.CheckState = True Then
  33.             Return SommaPen = PenalitāPartAnt + PenalitāJmpTrack + PenalitāBirillone + PenalitāMedia
  34.         Else
  35.             Return 0
  36.         End If
  37.         MsgBox(SommaPen)
  38.     End Function






Penso che tutti quei IF - elseif sono decisamente da principiante, usa questo:
Codice sorgente - presumibilmente VB.NET

  1. Dim SommaPen As Integer = 0
  2.  
  3.   If ChBoxPenPartAnt.CheckState = True Then  SommaPen = PenalitāPartAnt
  4.   If ChBoxPenJmpTrack.CheckState = True Then SommaPen += PenalitāJmpTrack
  5.   If ChBoxPenBirillone.CheckState = True Then SommaPen += PenalitāBirillone
  6.   If ChBoxPenMedia.CheckState = True Then SommaPen += PenalitāMedia
  7.  
  8. return SommaPen



quello che viene dopo return NON viene eseguito dal compilatore! quindi aggiungere MsgBox(SommaPen) dopo return e inutile.

PM Quote
Avatar
Nick_79 (Normal User)
Newbie


Messaggi: 6
Iscritto: 09/09/2014

Segnala al moderatore
Postato alle 16:58
Venerdė, 12/09/2014
Testo quotato

Postato originariamente da vankraster:

Penso che tutti quei IF - elseif sono decisamente da principiante, usa questo:
Codice sorgente - presumibilmente VB.NET

  1. Dim SommaPen As Integer = 0
  2.  
  3.   If ChBoxPenPartAnt.CheckState = True Then  SommaPen = PenalitāPartAnt
  4.   If ChBoxPenJmpTrack.CheckState = True Then SommaPen += PenalitāJmpTrack
  5.   If ChBoxPenBirillone.CheckState = True Then SommaPen += PenalitāBirillone
  6.   If ChBoxPenMedia.CheckState = True Then SommaPen += PenalitāMedia
  7.  
  8. return SommaPen



quello che viene dopo return NON viene eseguito dal compilatore! quindi aggiungere MsgBox(SommaPen) dopo return e inutile.



Provo...


Nick
PM Quote
Avatar
Nick_79 (Normal User)
Newbie


Messaggi: 6
Iscritto: 09/09/2014

Segnala al moderatore
Postato alle 18:00
Sabato, 13/09/2014
Testo quotato

Postato originariamente da Nick_79:

Testo quotato

Postato originariamente da vankraster:

Penso che tutti quei IF - elseif sono decisamente da principiante, usa questo:
Codice sorgente - presumibilmente VB.NET

  1. Dim SommaPen As Integer = 0
  2.  
  3.   If ChBoxPenPartAnt.CheckState = True Then  SommaPen = PenalitāPartAnt
  4.   If ChBoxPenJmpTrack.CheckState = True Then SommaPen += PenalitāJmpTrack
  5.   If ChBoxPenBirillone.CheckState = True Then SommaPen += PenalitāBirillone
  6.   If ChBoxPenMedia.CheckState = True Then SommaPen += PenalitāMedia
  7.  
  8. return SommaPen



quello che viene dopo return NON viene eseguito dal compilatore! quindi aggiungere MsgBox(SommaPen) dopo return e inutile.



Provo...



Provato non da nessun segno di funzionare, e non da nessun tipo di errore o avvertimento, come dicevo sembra quasi che non entri nella funzione!!!
Non č che sia sbagliato il comando CheckState?
Codice sorgente - presumibilmente C# / VB.NET

  1. ChBoxPenMedia.CheckState = True


o il richiamo della funzione?

Perché un altro problema che ho indicato come quello principale č che selezionando un concorrente dalla ListBox, ed inserendo i campi delle TextBox, per far in modo di visualizzare i dati inseriti in queste ultime, nelle label corrispondenti, devo riselezionare il concorrente.
Non so se ho sbagliato il metodo della Sub corrispondente (il SelectedIndexChanged):
Codice sorgente - presumibilmente VB.NET

  1. Private Sub LstBoxSelConc_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstBoxSelConc.SelectedIndexChanged




Nick
PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 19:15
Sabato, 13/09/2014
Codice sorgente - presumibilmente VB.NET

  1. Friend Function Altre_Penalitā As Integer
  2.     Dim SommaPen As Integer = 0
  3.      
  4.       If ChBoxPenPartAnt.Checked = True Then  SommaPen = PenalitāPartAnt
  5.       If ChBoxPenJmpTrack.Checked = True Then SommaPen += PenalitāJmpTrack
  6.       If ChBoxPenBirillone.Checked = True Then SommaPen += PenalitāBirillone
  7.       If ChBoxPenMedia.Checked = True Then SommaPen += PenalitāMedia
  8.      
  9.     return SommaPen
  10. end Function





If ok Then GOTO Avanza else GOTO Inizia

PM Quote
Avatar
Nick_79 (Normal User)
Newbie


Messaggi: 6
Iscritto: 09/09/2014

Segnala al moderatore
Postato alle 9:42
Domenica, 14/09/2014
Testo quotato

Postato originariamente da Ultimo:

Codice sorgente - presumibilmente VB.NET

  1. Friend Function Altre_Penalitā As Integer
  2.     Dim SommaPen As Integer = 0
  3.      
  4.       If ChBoxPenPartAnt.Checked = True Then  SommaPen = PenalitāPartAnt
  5.       If ChBoxPenJmpTrack.Checked = True Then SommaPen += PenalitāJmpTrack
  6.       If ChBoxPenBirillone.Checked = True Then SommaPen += PenalitāBirillone
  7.       If ChBoxPenMedia.Checked = True Then SommaPen += PenalitāMedia
  8.      
  9.     return SommaPen
  10. end Function






Domanda... perché Friend? All'interno del programma ho fatto altre funzioni, che eseguono dei calcoli (Vedi la Controlla_Tempo e Converti_Tempo), che funzionano benissimo a cui perō non ho aggiunto ne Public, ne Private ne Friend... č perché lavora sui CheckBox che bisogna aggiungerlo?


Nick
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo