2009-03-26 13 views
10

Estoy creando algunos brindis siempre en la cima como formularios y cuando los abro me gustaría que no quiten el enfoque de otros formularios cuando se abren. ¿Cómo puedo hacer esto?Abrir un formulario en C# sin foco

Gracias

+1

Posible duplicado de [muestran una forma sin robar el foco?] (Http://stackoverflow.com/questions/156046/show-a-form-without-stealing- focus) – Breeze

Respuesta

12
protected override bool ShowWithoutActivation 
{ 
    get 
    { 
     return true; 
    } 
} 

sustituir esta propiedad en el código del formulario y debe hacer el truco para ti.

+4

Debe tenerse en cuenta que esto NO funcionará si su formulario tiene la propiedad TopMost establecida en true, para usar esta sustitución con un formulario superior, debe anular CreateParams y establecer WS_EX_TOPMOST en ExStyle también. –

10

Me tomó algunos minutos usar la información de Aaron de Adam &, pero finalmente conseguí que funcionara para mí. Lo único que tenía que hacer era asegurarme de que la propiedad Top Most del formulario esté configurada como falsa. Aquí está el código que utilicé ...

protected override bool ShowWithoutActivation { get { return true; } } 

    protected override CreateParams CreateParams 
    { 
     get 
     { 
      //make sure Top Most property on form is set to false 
      //otherwise this doesn't work 
      int WS_EX_TOPMOST = 0x00000008; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TOPMOST; 
      return cp; 
     } 
    } 
Cuestiones relacionadas