2010-04-10 11 views
6

Estoy haciendo un complemento de excel en el que al hacer clic en el elemento del menú o en el botón de la barra de herramientas, se abre el formulario. Configuré el top de form en true, pero sigue siendo el más alto para todas las aplicaciones de Windows XP. Solo necesito permanecer en la cima de Microsoft Excel solamente.¿Cómo hacer que el formulario llegue a la parte superior de la aplicación solamente?

He elegido el proyecto en Visual Studio 2008, en Excel -> 2003.

Por favor, dime cómo hacerlo con cualquier forma ........

Respuesta

9

Puede configurar usuario de su forma de ser el Microsoft Excel [Editar código modificado] ventana. En Windows owned windows siempre se muestran encima de su propietario. Los cuadros de diálogo y elementos como el cuadro de búsqueda en Excel son ventanas de propiedad, que es lo que los mantiene expuestos sobre su propietario.

Hay un par de maneras de configurar el padre de un formulario:

  1. La propiedad Form.Owner (aunque el propietario tiene que ser otra forma)
  2. uso de la sobrecarga Form.Show(IWin32Window owner). (Consulte este blog post para saber cómo traducir un identificador de ventana a un IWin32Window).
  3. Utilice SetWindowLong() con el parámetro GWLP_HWNDPARENT.
  4. Usa ShowDialog() como sugirió Mikael Svenson.

Esto requiere que conozca el controlador de la ventana de aplicaciones de Excel.

+0

Buena distribución. Tu segunda forma resolvió mi problema finalmente. –

+0

Gracias por su respuesta ... –

1

-

[DllImport("user32.dll", SetLastError = true)] 
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

void func() 
{ 
    Form1 f = new Form1(); 
    SetParent(f.Handle, (IntPtr)ThisAddIn.ExcelApplication.Hwnd); 
    f.Show(); 
} 
+0

Pero necesito trabajar en la hoja de Excel cuando el diálogo está abierto. –

+0

Cambié mi código para usar establecer el elemento principal de una ventana. –

Cuestiones relacionadas