2010-09-17 24 views
4

J'ai un winform avec les boutons minimizeMaximizeClose désactivés, mais toujours si quelqu'un appuie dessus dans la barre des tâches, il minimisera. Je veux empêcher cela.Annuler Un WinForm Réduire?

Comment puis-je accomplir ceci?

Répondre

3

Vous pourriez probablement attraper les changer en cas SizeChanged et vérifiez la WindowState, si elle été réglée sur Minimized puis réglez-retour Normal. Pas la solution la plus élégante mais devrait fonctionner.

par ex.

private void myForm_SizeChanged(object sender, System.EventArgs e) 
{ 
    if (myForm.WindowState == FormWindowState.Minimized) 
    { 
     myForm.WindowState = FormWindowState.Normal; 
    } 
} 
+0

Cela devrait également fonctionner, mais depuis la l'événement est déclenché après que la fenêtre a été réduite, il est légèrement possible qu'un effet de scintillement apparaisse. –

+0

@Adrian: ouais je pensais juste que, cela dépend de ce qui est sur le formulaire et combien redessiner aurait besoin d'avoir lieu. – w69rdy

0

S'il est approprié pour vous, cacher la barre des tâches: ShowInTaskbar=false

15

Override WndProc sur votre formulaire, pour écouter les messages et minimiser les annuler.

Ajouter ce code à votre formulaire:

private const int WM_SYSCOMMAND = 0x0112; 
private const int SC_MINIMIZE = 0xf020; 

protected override void WndProc(ref Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND) 
    { 
     if (m.WParam.ToInt32() == SC_MINIMIZE) 
     { 
      m.Result = IntPtr.Zero; 
      return; 
     } 
    } 
    base.WndProc(ref m); 
} 

I modifié le code de Rob trouvé dans ce SO fil:
How to disable the minimize button in C#?

Fonctionne très bien: pas vacillante, rien lorsque les tentatives de l'utilisateur à minimiser.

+0

+1, c'est la bonne façon de le faire –

+0

Cela devrait être la réponse. –

0

vous pouvez simplement supprimer le bouton de réduction de la fenêtre:

ajoutez le code ci-dessous pour la méthode InitializeComponent() private void de la classe Form:

  this.MinimizeBox = false;