Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    25

    [VB.NET] Variabile che lampeggia

    ragazzi devo creare una variabile bool che passa da uno a zero con una certa frequenza.
    ho provato a fare così:


    Codice PHP:
        Dim secondo As Boolean
        Dim Tpieno 
    As Integer
        Dim Tvuoto 
    As Integer

       
    Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Timer1.Tick
            
    If Tpieno 100 Then
                secondo 
    True
                Tpieno 
    0
            
    ElseIf Tvuoto 200 Then
                secondo 
    False
                Tvuoto 
    0
            
    Else
                
    Tpieno Tpieno 1
                Tvuoto 
    Tvuoto 1
            End 
    If
        
    End Sub 
    Non ci crederete ma questo casino funziona pure
    Ora però vorrei sapere se c'è un modo + corretto e meno ingarbugliato di fare questa cosa.
    Si vede chiaramente che sono un programmatore novello quindi faccio un po di freestyle
    per risolvere le cose
    Grazie!

  2. #2
    Ma non fai prima ad impostare la proprietà Interval del timer all'intervallo con cui vuoi che la variabile booleana "flippi"? In tal caso le cose diventano molto più semplici...
    codice:
    Dim secondo As Boolean
    
       Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            secondo = Not secondo
        End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    25
    gragie MItaly!
    Come pensavo ci stava un modo molto + semplice
    ora questa variabile "secondo" la dovrei usare per far lampeggiare cioè per far cambiare il colore ad 1 pulsante.

    quello che ancora non ho capito in VB è come faccio a creare una routine slegata da un ogetto a da un tasto.
    in questo caso credo dovrebbe essere sempre attiva e fare più o meno così:

    se secondo = 1
    allora fai:
    b_ResetAllarmi.BackColor = Color.Red
    se invece secondo = 0
    fai questo:
    b_ResetAllarmi.BackColor = Color.White

    spero di essermi fatto capire.
    Grazie per l'aiuto siete preziosi!

  4. #4
    Un evento può essere generato solo da un oggetto; tuttavia nel tuo caso non è molto più semplice evitare del tutto la variabile booleana e fare
    codice:
       Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            If b_ResetAllarmi.BackColor = Color.Red Then
                    b_ResetAllarmi.BackColor = Color.White
            Else
                    b_ResetAllarmi.BackColor = Color.Red
            End If
        End Sub
    ?
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    25
    grazie ancora MItaly!
    sei stato gentilissimo.
    avevo pensato di usare la variabile boolean perchè mi serviva in più punti.
    davvero Un evento può essere generato solo da un oggetto??
    quindi quello che ho detto non si usa?
    cioè se devo monitorare qualcosa costantemente e non solo alla pressione di un tasto come faccio? :master:

  6. #6
    davvero Un evento può essere generato solo da un oggetto??
    Certo!
    cioè se devo monitorare qualcosa costantemente e non solo alla pressione di un tasto come faccio? :master:
    Crei una nuova classe che generi gli eventi che ti servono. In ogni caso secondo me puoi risolvere il tuo problema in maniera molto semplice tramite l'uso di una property:
    codice:
    Private m_secondo As Boolean
    Private Property secondo() As Boolean
        Set(ByVal NewValue As Boolean)
            m_secondo=true
            If secondo Then
                    b_ResetAllarmi.BackColor = Color.White
            Else
                    b_ResetAllarmi.BackColor = Color.Red
            End If
            'TODO: inserisci qui le altre operazioni da effettuare quando viene modificato il valore di "secondo"
            Return
        End Set
        Get
            return m_secondo
        End Get
    End Property
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        secondo = Not secondo
    End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    25
    bene bene ho parecchie cose da imparare!
    grazie ancora e buona giornata!

  8. #8
    Non c'è di che; ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Originariamente inviato da MItaly
    Un evento può essere generato solo da un oggetto; tuttavia nel tuo caso non è molto più semplice evitare del tutto la variabile booleana e fare
    Ti ricordo che può esserci il caso in cui uno stesso evento può essere generato da più oggetti: vedi ad esempio il caso dell'utilizzao di AddHandler su più controlli aggiunti a runtime.

  10. #10
    Con quella frase intendevo dire che solo gli oggetti appositamente pensati per generare eventi possono generarli (e non i tipi elementari come i boolean, che pure tecnicamente sono oggetti). Quello che dici te comunque è che gli eventi di più oggetti possono essere gestiti da un solo gestore di eventi (si può fare anche senza AddHandler, ma anche solo con Handles), ma non vedo cosa c'entri...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.