2010-02-18 4 views
2

J'ai un Window ensemble à la hauteur et la largeur de mes moniteurs:WPF fenêtre redimensionne lorsque l'ordinateur est verrouillé

var r = System.Drawing.Rectangle.Union(System.Windows.Forms.Screen.AllScreens[0].Bounds, System.Windows.Forms.Screen.AllScreens[1].Bounds); 
Height = r.Height; 
Width = r.Width; 

Tout cela est bien jusqu'à ce que je verrouille mon ordinateur (WIN + L), quand je reviens la fenêtre s'est redimensionnée pour être sur un seul moniteur.

Ce que je veux faire est de prévenir la diminution de la taille, que je dessine sur une toile sur le second moniteur, et lorsque le redimensionnement se produit, tout cela est perdu ..

Toute réflexion sur la façon dont je peut empêcher cela?

À la votre!

Répondre

1

Vous pouvez utiliser l'événement Déverrouiller/Verrouiller dans .NET. Stockez la hauteur, la largeur et la position de votre fenêtre pendant l'événement de verrouillage et restaurez-la sur un événement de déverrouillage. Assurez-vous que vous ajoutez "à l'aide Microsoft.Win32"

SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch); 

private void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) 
{ 
    if (e.Reason == SessionSwitchReason.SessionUnlock) 
    { 
     //Put resize logic here 
    } 
    else if (e.Reason == SessionSwitchReason.SessionLock) 
    { 
     //Put size store logic here 
    } 
} 
+0

Excellent, qui a résolu le problème! –

+0

@Chris. Pouvez-vous poster votre code de travail? J'ai essayé ceci et je n'arrive pas à le faire fonctionner. Soit le moment où l'événement 'SessionLock' est déclenché, la fenêtre a déjà été redimensionnée ou la restauration ne fonctionne pas sur l'événement' SessionUnlock'. – ChrisF

+0

@Chris - C'est OK. J'ai résolu le problème d'une manière différente. – ChrisF

Questions connexes