Мне удалось обнаружить изменения разрешения экрана как на настольном компьютере, так и на удаленном ноутбуке, подключающемся через удаленный рабочий стол, а также заставить его сообщать правильные значения разрешения следующим способом:
Я только что создалпример программы WinForms, которая обрабатывает это событие:
Microsoft.Win32.SystemEvents.DisplaySettingsChanged +=
SystemEvents_DisplaySettingsChanged;
В моем тесте у меня был список, в котором отображалась информация при изменении экрана:
void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
{
foreach (var screen in System.Windows.Forms.Screen.AllScreens)
{
listBox1.Items.Add("Device Name: " + screen.DeviceName);
listBox1.Items.Add("Bounds: " +
screen.Bounds.ToString());
listBox1.Items.Add("Type: " +
screen.GetType().ToString());
listBox1.Items.Add("Working Area: " +
screen.WorkingArea.ToString());
listBox1.Items.Add("Primary Screen: " +
screen.Primary.ToString());
}
}
Я запустил программу в режиме выпуска за пределамиотладчик на моем рабочем столе, а затем подключился к ноутбуку с более низким разрешением, и цифры изменились, чтобы отразить более низкое разрешение.