Estoy creando una extensión de Visual Studio, que debería agregar mi botón de herramienta en una barra de herramientas o una tira de herramientas.
Hay 2 casos:
primer caso, agregue mi botón rojo a la barra de herramientas/tira de herramientas que fue agregada por otra extensión (Visual Micro), vea la imagen 1.
segundo caso, agregue mi botón rojo a la barra de herramientas/banda de herramientas de Propiedades de la interfaz de usuario de Visual Studio, vea la imagen 2.
Imagen 1:
Imagen 2:
Traté de implementar el segundo caso, pero sin ningún resultado positivo.
Aquí está el código:
EventHandler btnClick = new EventHandler(delegate (Object o, EventArgs a) { //snip }); System.Drawing.Image img = System.Drawing.Image.FromFile("W:\\...\\red_btn.png"); ToolStripButton btn = new ToolStripButton("My Button", img, btnClick, "RedButton"); btn.Width = 32; btn.Height = 32; btn.Visible = true; IntPtr hProperties = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "WindowsForms10.Window.8.app.0.c940ee_r43_ad1", null) ; ToolStrip toolStrip = (ToolStrip)ToolStrip.FromHandle(hProperties); if (toolStrip != null) { toolStrip.Items.Add(btn); toolStrip.Refresh(); toolStrip.Visible = true; }
Cuando ejecuto el código anterior desde mi método ToolWindow1Control init(), no sucede nada. Lo que intenté fue encontrar el identificador de la barra de herramientas en la ventana Propiedades y agregarle mi botón. Pero eso no está funcionando.
Espero agregar el botón rojo a la barra de herramientas de la ventana Propiedades. Este botón debería ejecutar algún código relacionado con el archivo fuente que se está visualizando actualmente. Y este es el segundo caso.
Para el primer caso, no tengo idea de cómo encontrar el identificador de esa barra de herramientas para agregar mi botón.
Por favor ayuda.
No hay ninguna barra de herramientas o barra de herramientas HWND en las ventanas de WPF. Lo que intentas hacer no es posible. Si necesita agregar elementos visuales a la GUI de Visual Studio, use la API pública. Esto no es solo mejor, es la única forma de hacerlo.