Visualizza il feed RSS

Fix's Blog

[Vb.Net] Avviare applicazione con Form di avvio Invisibile

Valuta questo inserimento
di
Fix
pubblicato il 04-02-2012 alle 18:26 (4757 Visite)

Se volessimo avviare un'applicazione Windows Form direttamente nella SystemTray, senza mostrare il Form di avvio, come dovremmo procedere ?

Uno potrebbe essere portato a pensare che basti modificare la visibilità all'interno del Form Load.

Peccato che, un codice come questo, non funzioni.

    Private Sub fMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Me.Visible = False
End Sub

All'avvio verrà comunque mostrato il Form.

Spostandosi, invece, nell'evento Shown, il Form viene effettivamente nascosto ma compare un fastidioso "flash", dovuto alla "comparsa e scomparsa" repentina del Form stesso.

Questo perchè l'evento Shown viene eseguito alla prima visualizzazione del Form (Quindi prima viene visualizzato e poi viene generato l'evento)

Come fare allora ?

Una delle possibilità è quella di eseguire l'override del Metodo Form.SetVisibleCore (System.Windows.Forms)

Per fare una prova:
  1. Si crei una nuova applicazione con un Form, denominato fMain
  2. Si inserisca all'interno una NotifyIcon, denominata MyIcon, a cui bisognerà associare un file ICO (sarà l'icona mostrata nella SystemTray)
  3. Si utilizzi questo codice di esempio:
    Public Class fMain

    Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
    If Not Me.IsHandleCreated Then
    CreateHandle()
    value = False
    End If
    MyBase.SetVisibleCore(value)
    End Sub

    Private Sub MyIcon_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyIcon.MouseDoubleClick
    Me.Show()
    End Sub

    Private Sub fMain_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
    If Me.WindowState = FormWindowState.Minimized Then
    Me.Hide()
    End If
    End Sub

    End Class

Avviando l'applicazione il risultato sarà quello di veder comparire solo l'icona nella SystemTray, senza nessun Form.
Per visualizzare il Form basterà eseguire il DoppioClick sull'icona, e, per nasconderlo nuovamente, basterà minimizzarlo.

Ciao

aggiornamento da 04-02-2012 a 18:32 di Fix

Categorie
Programmazione , Microsoft

Commenti

  1. L'avatar di AlbertoM
    Utile, pratico, semplice, bravo (come il solito).