Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

pausare la lettura delle righe in visual basic

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

pausare la lettura delle righe in visual basic

Messaggioda KillerPenguin » mer giu 13, 2012 4:34 pm

ciao ragazzi,
come da titolo vorrei sapere se esiste un modo per pausare di un certo periodo di tempo la lettura delle righe del progetto senza ricorrere ad un timer
ad esempio:
Codice: Seleziona tutto
label1.text="ciao"
pausa di 2 secondi
label1.text="come stai?"


in pratica vorrei riprodurre la funzione timeout del dos e ricordo senza utilizzare un Timer!
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: pausare la lettura delle righe in visual basic

Messaggioda Andy94 » mer giu 13, 2012 5:02 pm

Senza il timer non è facile, perché l'applicazione è bloccata fin tanto che finisce il tempo di attesa. Questo si spiega dal fatto che la funzione di cui sotto blocca il thread in esecuzione in quel momento.
Il metodo da utilizzare è questo.
http://msdn.microsoft.com/en-us/library/d00bd51t.aspx
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

Re: pausare la lettura delle righe in visual basic

Messaggioda M@ttia » mer giu 13, 2012 6:05 pm

C'è un motivo particolare per cui non vuoi usare un semplice timer?
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Re: pausare la lettura delle righe in visual basic

Messaggioda KillerPenguin » gio giu 14, 2012 8:11 am

M@ttia ha scritto:C'è un motivo particolare per cui non vuoi usare un semplice timer?

ora vi spiego. quest'applicazione che sto scrivendo contiene una miriade di codici, se dovessi usare un timer per stoppare l'esecuzione (correggetemi se sbaglio) dovrei far partire il timer,al tick deve spostarsi nella private sub che mi interessa per poi indirizzarlo, tramite il comando ToGo ed un etichetta,alla riga dopo l'avvio del timer (timer.start()). è un po incasinato non trovate?
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: pausare la lettura delle righe in visual basic

Messaggioda Andy94 » gio giu 14, 2012 10:37 am

Non è detto che con il metodo Sleep tu riesca a risolvere il problema ottenendo ciò che desideri, o meglio, potresti anche ma introduci un sacco di codice necessario a far sì che l'interfaccia non si blocchi.
La soluzione migliore sarebbe quella di ripensare il concept generale e:
- Evitare la necessità di attendere
- Utilizzare il multithreading e far gestire l'interfaccia separatamente dal codice in background.

La seconda è molto più complicata, e potrebbe richiedere anche una riscrittura se la tua applicazione originariamente non li prevedeva.

[ciao]
Avatar utente
Andy94
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 9998
Iscritto il: lun apr 09, 2007 8:39 pm

R: pausare la lettura delle righe in visual basic

Messaggioda KillerPenguin » sab giu 16, 2012 12:41 am

Mi sa che hai ragione... dovendo usare un timer devo quindi:
Avviare il timer;
All'evento tick spostarlo nell'evento click del button1 (potete spiegarmi come si fa cortesemente);
Stoppare il timer;
Tramite ToGo ed una etichetta tornare alla riga.

Ho detto bene? Se si, so che per una private sub creata manualmente, per spostarcisi dentro basta scrivere il nome della private sub con le parentesi alla fine. Per un evento invece come fare? Poniamo il caso che si tratti dell'evento click del button1, come agisco?
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: pausare la lettura delle righe in visual basic

Messaggioda M@ttia » sab giu 16, 2012 11:37 am

Non puoi chiamarlo allo stesso modo? È una private Sub anche lui...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: pausare la lettura delle righe in visual basic

Messaggioda KillerPenguin » lun giu 18, 2012 3:27 pm

non mi sono spiegato allora, se io volessi spostarmi dala private sub prova alla private sub Button1_click come faccio? ho provato in questo modo ma mi da errore
Codice: Seleziona tutto
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        prova()
    End Sub

    Private Sub prova()

        Button1_Click()
    End Sub
End Class
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am

Re: pausare la lettura delle righe in visual basic

Messaggioda M@ttia » lun giu 18, 2012 8:56 pm

Risposta rapida: usa
Codice: Seleziona tutto
Button1.PerformClick()
(il bottone viene premuto davvero, quindi deve essere visibile ed enabled).

Risposta breve: in generale puoi "barare" facendo:
Codice: Seleziona tutto
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  DaFareQuandoCliccoIlBottone()
End Sub

Private Sub DaFareQuandoCliccoIlBottone()
      (... tutte le cose che avresti normalmente messo in Button1_Click sopra ...)
End Sub

Private Sub prova()
  DaFareQuandoCliccoIlBottone()
End Sub



Risposta articolata: Button1_click è un sub (evento) che necessita di due argomenti:
Codice: Seleziona tutto
sender As System.Object
e As System.EventArgs

Citando il loro significato:
sender is typically going to be the button you clicked. This provision is
in there because you can assign a single handler for all your buttons, this
allows you to determine which one is was. Notice "Handles Button1.Click" at
the end of you declaration? You can easily make it also respond to Button2
as well by chaning it to "Handles Button1.Click, Button2.Click"

e are the informative bits about the click, such as which button you clicked
or if you had a shift key pressed at the same time.

As an example
Codice: Seleziona tutto
private Sub MyMethodCall1()
'logic here
end Sub

private Sub MyMethodCall2()
'logic here
end Sub

Private Sub Button1_Click(sender, e)

if typof(sender) is button then
if sender is me.button1 then
MyMethodCall1
else
MyMethodCall2
endif
endif

end sub

private sub Text1_Validate(sender, e)
dim txt as textbox = ctype(sender, textbox)
if txt.text.length > 0 then
MyMethodcall2
end if
e.validate = true
end sub



Se tu comunque lo usi in modo "grezzo" senza sfruttare la cosa, allora puoi dare come parametri quelli da cui viene davvero chiamato l'evento (così una volta dentro puoi sempre sapere da dove sei arrivato), come ad es.
Codice: Seleziona tutto
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Text = "1"
        Timer1.Start()
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Text += 1
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Button1_Click(sender, e) '// call event.
    End Sub

In alternativa penso tu possa anche richiamarlo semplicemente con:
Codice: Seleziona tutto
Button1_Click(nothing, nothing)

ma non sono sicuro al 100% e al momento non posso testarlo (per questo l'ho scritto come ultimo).

[^]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: pausare la lettura delle righe in visual basic

Messaggioda KillerPenguin » mer giu 20, 2012 10:10 pm

m@ttia ha scritto:In alternativa penso tu possa anche richiamarlo semplicemente con:
Codice: Seleziona tutto
Button1_Click(nothing, nothing)

ma non sono sicuro al 100% e al momento non posso testarlo (per questo l'ho scritto come ultimo).
[^]


l'ho provato e funziona che è una meraviglia, ti ringrazio [grazie]
www.TheKillerPenguin.Altervista.org
Avatar utente
KillerPenguin
Bronze Member
Bronze Member
 
Messaggi: 517
Iscritto il: lun feb 14, 2011 6:37 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising