Этот код довольно грязный, большая часть его нуждается в шунтировании, поскольку кажется, что он избыточен.Возможно, проблема в следующем:
if (!Screen.AllScreens[1].Bounds.IsEmpty)
{
Вы просто предполагаете, что у пользователя есть 2 экрана, ссылаясь на второй экран, не проверяя, есть ли в массиве Screen.AllScreens
элемент [1]
th.Почему бы не что-то более похожее на:
if(Screen.AllScreens.Length > 1) //does the user have at least 2 screens?
Я не могу представить, что Rectangle
, то есть Screen.Bounds
, тоже когда-нибудь будет пустым - это не проверка, если на экране ничего нет, это проверка, еслиЭкран размером 0x0 пикселей.Наверное, не то, что вы хотите.
https://docs.microsoft.com/en-us/dotnet/api/system.drawing.rectangle.isempty?view=netframework-4.7.2
Задайте еще один вопрос о фактической проблеме, которую вы пытаетесь решить, возможно, что-то вроде: «Как я могу проверить, есть ли у моего пользователя 2 монитора, и если они есть, откройте мойприложение на втором мониторе, но если нет, то откройте его на первом мониторе? "- Я думаю, что это проблема XY, когда у вас есть какая-то проблема, вы написали некоторый код, чтобы попытаться решить ее, она не работает / не будет работать, и вы просите помощи в исправлении этого кода- вместо этого скажите использовать исходную проблему, которую вы пытаетесь решить, а не проблему с неработающим решением