2010-02-18 2 views
2

У меня есть Window набор на высоту и ширину моих мониторов:Wpf окно изменяет размер, когда компьютер заблокирован

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; 

Это все хорошо, пока я не Зафиксируйте мой компьютер (WIN + L), когда я вернусь окно изменило размер на один монитор.

То, что я хочу сделать, это предотвратить уменьшение размера, как я рисую на холсте на втором мониторе, и когда происходит изменение размера, это все потеряно ..

Любые мысли о том, как я может предотвратить это?

Cheers!

ответ

1

Вы можете использовать событие Unlock/Lock в .NET. Сохраните высоту, ширину и положение окна во время события блокировки и восстановите его в событии разблокировки. Убедитесь, что вы добавляете "с помощью 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

Отлично, что решить ее! –

+0

@Chris. Можете ли вы опубликовать свой рабочий код? Я пробовал это и не могу заставить его работать. Либо к моменту запуска события SessionLock окно уже было изменено или восстановление не работает в событии SessionUnlock. – ChrisF

+0

@ Крис - Все в порядке. Я решил проблему по-другому. – ChrisF

Смежные вопросы