Как узнать, на каком экране запущено приложение в C#

Как определить, на каком экране запущено мое приложение?

4 ответа

Решение

Это должно начать вас. Получите кнопку и список в форме и поместите это в Button_Click:

listBox1.Items.Clear();
foreach (var screen in Screen.AllScreens)
{
    listBox1.Items.Add(screen);
}
listBox1.SelectedItem = Screen.FromControl(this);            

Ответ в последней строке, помните, что форма тоже является элементом управления.

Что ж, прошло много лет, и это является производным от принятого ответа, но это сработало для меня. Этот метод является членом класса Form. Вscreen Переменная содержит свойства экрана, на котором находится левый верхний угол формы при вызове метода.

private void ClsFormFoo_Load(object sender, EventArgs e)
{
    Screen screen = Screen.FromControl(this);
}

Класс System.Windows.Forms.Screen обеспечивает эту функцию.

Например:

Screen s = Screen.FromPoint (p);

где p - это точка где-то в вашем приложении (в экранных координатах).

Посмотрите на эти ссылки:

Это в WinAPI. Могут быть.NET-библиотеки с несколькими мониторами / вызовы API, но если нет, то вы можете написать свои собственные.

Хм, я не думаю, что есть способ, чтобы получить это, но это не должно быть слишком сложно определить. Используйте класс Screen, чтобы найти все экраны, пролистать этот список и сравнить его границы с расположением формы.

Вот некоторый непроверенный код

Screen [] screens = Screen.AllScreens;

for(index = 0; index < screens.Length; index++) {
     if (screens[index].Contains(this.Bounds))
        return screens[index];
}
Другие вопросы по тегам