Панель задач не прячется, когда один экран, но скрывается, когда несколько C# - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть код ниже, который я использую, который включает в себя скрытие панели задач в моей форме. Он хорошо работает, если к моему компьютеру подключены два экрана, но если на панели задач отображается только один экран, я не уверен, почему?

        FormBorderStyle = FormBorderStyle.None;
        await Task.Delay(500);
        this.WindowState = FormWindowState.Normal;
        this.ActiveControl = textBox1;
        StartPosition = FormStartPosition.Manual;
        Location = new Point(0, 0);
        var height = Screen.AllScreens.Max(x => x.WorkingArea.Height + x.WorkingArea.Y);
        var width = Screen.AllScreens.Max(x => x.WorkingArea.Width + x.WorkingArea.X);
        Size = new Size(width, height);
        this.BringToFront();
        this.AcceptButton = button1;
        this.ControlBox = false;
        this.TopMost = true;
        this.Size = Size;
        Rectangle ru = Rectangle.Union(Screen.AllScreens[0].Bounds , Screen.AllScreens[1].Bounds);
        Bounds = ru;

1 Ответ

0 голосов
/ 06 апреля 2020

Вы получаете сообщение об ошибке «System.IndexOutOfRangeException:« Индекс находился за пределами массива. »Из-за AllScreens [1], когда у вас подключен только один экран, в массиве AllScreen есть только одно значение, так что index [1] выходит за пределы.

Изменить;

Rectangle ru = Rectangle.Union(Screen.AllScreens[0].Bounds , Screen.AllScreens[1].Bounds);

К;

var ru = Screen.AllScreens.Select(a => a.Bounds).Aggregate(Rectangle.Union);

Теперь, потому что вы используете Select, вы получите только AllScreens [0] вместо того, чтобы угадывать, какие индексы будут там, этот код теперь также работает, если у вас есть три монитора или любая другая конфигурация мониторов.

Редактировать

Кроме того, в качестве небольшого примечания, если вы пытаетесь заблокировать действия пользователя вне вашей программы. Это не будет полностью блокировать их действия, например, нажатие клавиши windows по-прежнему вызовет панель задач или вернет управление пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...