def insenStringCompare(s1, s2):
""" Method that takes two strings and returns True or False, based
on if they are equal, regardless of case."""
try:
return s1.lower() == s2.lower()
except AttributeError:
print "Please only pass strings into this method."
print "You passed a %s and %s" % (s1.__class__, s2.__class__)
Вы можете получить массив экранов, которые у вас есть, используя этот код.
Screen[] screens = Screen.AllScreens;
Вы также можете выяснить, на каком экране вы находитесь, запустив этот код ( this это форма окна, в которой вы находитесь)
Screen screen = Screen.FromControl(this); //this is the Form class
вкратце ознакомьтесь с классом Screen и статическими вспомогательными методами, они могут вам помочь.
Ссылка MSDN , не имеет особого смысла .. Я предлагаю возиться с код самостоятельно.
Если вы помните расположение и размер окна, этого будет достаточно. Когда вы устанавливаете позицию в ранее использовавшуюся позицию, если она оказалась на втором мониторе, она вернется туда.
Например, если у вас есть 2 монитора, оба размером 1280x1024, и вы устанавливаете левое положение вашего окна на 2000 пикселей, он появится на втором мониторе (при условии, что второй монитор находится справа от первого.):)
Если вас беспокоит, что второго монитора не будет, когда приложение запускается в следующий раз, вы можете используйте этот метод, чтобы определить, пересекает ли ваше окно какой-либо из экранов:
private bool isWindowVisible(Rectangle rect)
{
foreach (Screen screen in Screen.AllScreens)
{
if (screen.Bounds.IntersectsWith(rect))
return true;
}
return false;
}
Просто перейдите в желаемое место вашего окна, и он сообщит вам, будет ли оно видимым на одном из экранов. Наслаждайтесь!
Вы можете получить текущий экран с помощью
var s = Screen.FromControl(this);
, где , это
- форма (или любой элемент управления в форме). Что касается того, как запомнить, это немного сложно, но я бы выбрал индекс в массиве Screen.AllScreens или, может быть, s.DeviceName. В любом случае проверьте перед использованием настроек при запуске, чтобы предотвратить использование монитора, который был отключен.
Местоположение формы укажет вам, на каком экране она находится. Я действительно не понимаю, почему вам нужно знать, на каком экране он находится, потому что, если вы восстановите его, используя сохраненное место, оно должно просто восстановиться в том же месте (возможно, вы сможете подробнее объяснить, почему).
В противном случае вы можете сделать что-то вроде этого:
Screen[] scr = Screen.AllScreens;
scr[i].Bounds.IntersectsWith(form.Bounds);
Каждый экран имеет свойство Bounds, которое возвращает прямоугольник. Вы можете использовать функцию IntersectsWith (), чтобы определить, находится ли форма внутри экрана.
Кроме того, они в основном предоставляют функцию, которая делает это также в классе Screen
Screen screen = Screen.FromControl(form);
Вы можете использовать объект «Экран»: System.Windows.Forms.Screen
Начните играть примерно так:
Screen[] screens = Screen.AllScreens;
for (int i = 0; i < screens.Length ; i++)
{
Debug.Print(screens[i].Bounds.ToString());
Debug.Print(screens[i].DeviceName);
Debug.Print(screens[i].WorkingArea.ToString());
}
Это может дать вам то, что вам нужно