WaitCursor - MiniTip

Mi trovo spesso a dover cambiare il cursore dei miei programmi in WaitCursor per suggerire all'utente di attendere. Prendendo spunto da un forum (di cui ho perso ogni riferimento) mi sono costruito la seguente mini-classe:

Public Class HourGlassCursor

    Public Sub New()
        Cursor.Current = Cursors.WaitCursor
    End Sub

    Protected Overrides Sub Finalize()
        Cursor.Current = Cursors.Default
        MyBase.Finalize()
    End Sub

End Class

 

In questo modo basta inserire ove necessario (di solito all'inizio della routine interessata) la seguente istruzione:

Dim hgc As New HourGlassCursor

Ed in uscita dalla routine stessa in cursore tornerà allo stato di default.

Technorati Tag: ,

posted @ martedì 8 luglio 2008 03:02

Print

Comments on this entry:

# re: WaitCursor - MiniTip

Left by Michele Bernardi at 08/07/2008 11:40
Gravatar
Io mi sono fatto una classe "stack dei cursori"... Certo hai comunque il problema di doverti ricordare la "Pop", però non quello di ricrodare che cursore avevi in precedenza.

# re: WaitCursor - MiniTip

Left by Riccardo at 08/07/2008 12:21
Gravatar
Infatti... ed a mio avviso il modo migliore di tenere traccia dello stack dei cursori è quello di farlo fare al Framework... ecco cosa scriverei in c#:

public class HourGlassCursor : IDisposable
{
private readonly Cursor _oldCursor;

public HourGlassCursor()
{
_oldCursor = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
}

public void Dispose()
{
Cursor.Current = _oldCursor;
}
}

ed in fase di utilizzo scriverei semplicemente:
using (new HourGlassCursor())
{
Mio codice
}

ciao, Riccardo.

# re: WaitCursor - MiniTip

Left by Nazareno at 08/07/2008 13:06
Gravatar
Grazie per i suggerimenti... direi che la versione di Riccardo porta la "mia" classe HourGlassCursor alla versione 2.0 :-)

# re: WaitCursor - MiniTip

Left by M.rkino at 08/07/2008 14:27
Gravatar
come ti han detto, attento il Finalize non è affidabile... la risorsa potrebbe non essere liberata quando speri.

La tua esigenza suona simile a un suggerimento che ho aperto su "lady bug", che avevo raccontanto qui http://blogs.ugidotnet.org/Markino/archive/2006/04/15/38867.aspx
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011