2010-10-15 25 views
5

Actualmente tengo un complemento de estudio visual y he creado un nuevo panel de ventana de salida con el que puedo escribir texto con éxito. Sin embargo, cuando la ventana de salida no está abierta o está minimizada, no se abre (ventana emergente) cuando llamo al método Activate() en el panel. ¿Alguna idea de cómo puedo lograr esto?¿Cómo mostrar la ventana de salida desde un complemento?

+1

Yo diría que normalmente no es muy apropiado que un complemento cambie automáticamente de ventanas. Déjalo en manos del usuario. –

+0

@Hans - Puede ser útil en un caso similar a Buscar donde, después de la búsqueda, se le da enfoque a la ventana de resultados y desea dirigir la atención del usuario allí. ¿No? – shaunmartin

+0

@ ¿Qué pasa si su complemento mágicamente hace todo su trabajo? –

Respuesta

4

Si creó su complemento con el asistente de complementos, debe tener un método Exec() como el siguiente. He agregado dos líneas que hacen que la ventana de Salida se abra y se vuelva visible, independientemente de si se cerró o minimizó originalmente. Probé esto en VS2008 y VS2010.

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled) 
{ 
    handled = false; 
    if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) 
    { 
     if(commandName == "AddinTest.Connect.AddinTest") 
     { 
      // Find the output window. 
      Window outputWindow = _applicationObject.Windows.Item(Constants.vsWindowKindOutput); 
      // Show the window. (You might want to make sure outputWindow is not null here...) 
      outputWindow.Visible = true; 

      handled = true; 
      return; 
     } 
    } 
} 
+0

Gracias, era exactamente lo que necesitaba. – gouldos

+0

Esto también fue útil en VSPackage, así que gracias por eso. ¡Me estaba volviendo loco! El código debe modificarse ligeramente para usar _dte.Windows en lugar de _applicationObject. –

Cuestiones relacionadas