Il est souvent souhaitable de masquer votre formulaire avec le NotifyIcon pour que votre application démarre immédiatement dans le tray. Vous pouvez l'empêcher d'être visible en surchargeant la méthode SetVisibleCore(). Vous souhaitez également empêcher la fermeture du formulaire lorsque l'utilisateur clique sur le bouton X. Remplacez la méthode OnFormClosing pour masquer le formulaire. Vous voudrez un menu contextuel pour permettre à l'utilisateur de quitter réellement votre application.
Ajoutez un NotifyIcon et un ContextMenuStrip à votre formulaire. Donnez au CMS les commandes de menu Show et Exit. Faites en sorte que le code du formulaire ressemble à ceci :
public partial class Form1 : Form {
bool mAllowClose;
public Form1() {
InitializeComponent();
notifyIcon1.DoubleClick += notifyIcon1_DoubleClick;
notifyIcon1.ContextMenuStrip = contextMenuStrip1;
showToolStripMenuItem.Click += notifyIcon1_DoubleClick;
exitToolStripMenuItem.Click += (o, e) => { mAllowClose = true; Close(); };
}
protected override void SetVisibleCore(bool value) {
// Prevent form getting visible when started
// Beware that the Load event won't run until it becomes visible
if (!this.IsHandleCreated) {
this.CreateHandle();
value = false;
}
base.SetVisibleCore(value);
}
protected override void OnFormClosing(FormClosingEventArgs e) {
if (!this.mAllowClose) { // Just hide, unless the user used the ContextMenuStrip
e.Cancel = true;
this.Hide();
}
}
void notifyIcon1_DoubleClick(object sender, EventArgs e) {
this.WindowState = FormWindowState.Normal; // Just in case...
this.Show();
}
}