2010-07-28 3 views
0

J'ai fait une fenêtre sur mesure pour mon application et j'ai écrit un code si un utilisateur clique sur ma commande bouton Agrandir:Maximisation une fenêtre personnalisée pour inclure la barre des tâches

private void MaxThis(object sender, System.Windows.RoutedEventArgs e) 
    { if (WindowState == WindowState.Maximized){ 
     WindowState = WindowState.Normal;} 

    else { 
    this.Top = 0; 
    this.Left = 0; 
    this.MaxWidth = System.Windows.SystemParameters.WorkArea.Width; 
    this.MaxHeight = System.Windows.SystemParameters.WorkArea.Height; 
    this.WindowState = WindowState.Maximized; 
    } 
    } 

La restauration à l'état normal fonctionne très bien. Cependant quand je veux maximiser, il maximise la fenêtre avec une petite marge sur la droite et le bas de l'écran. En cliquant à nouveau sur le bouton Agrandir, cela résout ce problème. Comment puis-je corriger cela pour maximiser au premier clic ...?

+0

Avez-vous essayé le débogage sur chaque consécutive Maximiser/Normaliser cliquer et voir quelles valeurs sont réellement définies? Peut-être que vous n'avez pas pris en compte des choses telles que la bordure de la fenêtre, les marges, etc. Je suppose que c'est WPF? – SirDemon

+0

Vous avez deviné juste :) La chose est que je n'ai pas de bordure ou de marges ensemble, tout est nul ... – internetmw

+0

Des conseils sur la façon de déboguer cela et obtenir les valeurs d'écran? – internetmw

Répondre

0

Essayez d'utiliser juste

this.WindowState = WindowState.Maximized; 

Code Peut-être, va avant déconner action API Windows.


Désolé, mon erreur. Ensuite, vous devez utiliser l'API Windows pour déclencher l'événement Maximize. Essayez ce code:

[DllImport("user32.dll")] 
public static extern int SendMessage(
    int hWnd,  // handle to destination window 
    uint Msg,  // message 
    long wParam, // first message parameter 
    long lParam // second message parameter 
); 
public const int WM_SIZE = 0x0005; 
public const int SIZE_MAXIMIZED = 2; 

Et dans votre événement click:

SendMessage(this.Handle, WM_SIZE, SIZE_MAXIMIZED, 0); 
+2

Non, je ne peux pas l'utiliser parce que la fenêtre va aussi sur ma barre des tâches ... – internetmw

2

Otez les propriétés de hauteur et la largeur que vous avez défini dans XAML pour votre fenêtre

Questions connexes