¿Cómo puedo encontrar lo que la pantalla de la aplicación se está ejecutando en en C #

StackOverflow https://stackoverflow.com/questions/549751

  •  23-08-2019
  •  | 
  •  

Pregunta

¿Cómo puedo determinar qué mi pantalla de aplicación se ejecuta en?

¿Fue útil?

Solución

Esto debería empezar. Obtener un botón y un cuadro de lista en un formulario y poner esto en el Button_Click:

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

La respuesta está en la última línea, recuerda que una forma es un control también.

Otros consejos

La clase System.Windows.Forms.Screen proporciona este functionaility.

Por ejemplo:

Screen s = Screen.FromPoint (p);

donde P es un punto en algún lugar de su aplicación (en coordenadas de pantalla).

Hmm, creo que no hay una construida en forma de conseguir esto, pero no debería ser demasiado difícil de determinar. Utilice la pantalla clase para encontrar todas las pantallas, de bucle a través de esa lista y comparar sus límites con la ubicación del formulario.

Aquí hay un código no probado

Screen [] screens = Screen.AllScreens;

for(index = 0; index < screens.Length; index++) {
     if (screens[index].Contains(this.Bounds))
        return screens[index];
}

Tome un vistazo a estos enlaces:

Estos son en WinAPI. Puede haber .NET llamadas múltiples librerías de monitor / API, pero si no, con estos se puede escribir el suyo propio.

Bueno, han pasado muchos años, y es derivado de la respuesta aceptada, pero esta trabajado para mí. Este método es un miembro de la clase Form. La variable screen contiene las propiedades de la pantalla que la esquina superior izquierda de la forma es en cuando se llama al método.

private void ClsFormFoo_Load(object sender, EventArgs e)
{
    Screen screen = Screen.FromControl(this);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top