2009-09-21 8 views
17

He escrito un simple programa de MSN al estilo que va a enviar y recuperar mensajes usando WCF. El formulario principal contiene un cuadro de texto para escribir el mensaje que se enviará. En segundo plano, la aplicación sondea el servidor cada pocos segundos para nuevos mensajes. Cuando se recibe un mensaje nuevo, se abre una nueva ventana para mostrarlo. Esto tiene que hacerse en el subproceso UI usando la clase Dispatcher.Cómo prevenir una nueva forma de WPF desde el robo de enfoque?

El problema es que cuando se muestra la nueva ventana, el foco se desplaza desde el cuadro de texto, de modo que la tipificación se interrumpe. Esto es muy molesto! En MSN Messenger es posible continuar escribiendo su propio mensaje al recibir una. ¿Cómo se hace?

Como solución alternativa que posponer la ventana emergente con el mensaje nuevo, mientras que el cuadro de texto tiene el foco, pero no debe haber una mejor manera!

+1

¿Hay una manera de abrir una nueva ventana sin que se centró? –

Respuesta

46

La respuesta es sencilla: Desde .NET 3.5 SP1 formas de WPF tienen una propiedad ShowActivated. Ponga esto en falso y por lo tanto cualquier forma marcada no robará ningún foco no más!

+8

forma A WPF? ¿Que es eso? –

-2

Usted puede establecer la propiedad enfocable de la ventana para falsa.

+1

No en este caso. El usuario debe ser capaz de interactuar con la forma – Dabblernl

-1

En mi aplicación tengo que mostrar una ventana de notificación en la parte superior de todas las demás ventanas mientras mi MainWindow se reduce al mínimo, pero sin robar el foco.

Así que acabo de hacer esto:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    this.Topmost = true; 
    this.Topmost = false; 
} 
+1

Dado que los incendios de evento cargadas después de la ventana ya está activado y se muestra, esto no impide que si desde el robo de enfoque. – Wobbles

Cuestiones relacionadas