Control de usuario con ventana de herramientas de tamaño considerable

En C # WinForms, me gustaría hacer un UserControl que imite el aspecto de una ToolWindow: de tamaño considerable, con espacio para un título y un botón de cierre en la parte superior derecha. Esto parece posible al anular CreateParams (), usar las constantes relevantes de WinUser.h y agregar controladores personalizados para los eventos de mouse apropiados, pero parece ser un gran problema para algo tan simple. Antes de empezar, ¿hay alguna forma más fácil?

preguntado el 08 de enero de 11 a las 20:01

Oye, Aaron, tal vez no entiendo tu pregunta. ¿Qué va a haber en este UserControl? -

Una cuadrícula, pero mi idea es definir una clase derivada de UserControl en la que pueda implementar un borde de este tipo, y luego pegar el contenido que desee dentro de eso. -

2 Respuestas

Realmente, la forma más fácil es usar un Formulario con FormBorderStyle = SizeableToolWindow. Para eso fue hecho. Muéstrelo con la sobrecarga Mostrar (propietario) para que siempre esté en la parte superior de la ventana principal. Si desea salvar el UserControl, simplemente Dock = Complete el formulario. Aunque exponer sus propiedades se vuelve más difícil de hacer de forma limpia.

Consulte DockPanel Suite de Weifenluo para obtener un modelo de ventanas que se parece al de Visual Studio.

Respondido el 09 de enero de 11 a las 00:01

Gracias Hans. En combinación con SetParent () y ShowWindow () de la API, esto me da el comportamiento que necesito. Las ventanas de herramientas permanecen dentro del formulario y obtengo el borde y el título de forma gratuita. - Aaron Haspel

Hackorama. Simplemente establezca la propiedad TopLevel en false si desea hacer esto. - Hans Passant

Oh, estoy de acuerdo. No sabía sobre TopLevel y eso funciona bien. - Aaron Haspel

ToolWindow es una ventana, UserControl es un control que se encuentra DENTRO de una ventana (como un cuadro de texto, un botón, etc.). Si desea tener un UserControl que sea de tamaño considerable y tenga un título y un botón de cierre, creo que tendrá que crear una barra de título y un botón de cierre y controles de tamaño como partes del control en sí.

Debería eliminar el control de su padre al "cerrar" y cambiar el tamaño del control en su padre al "cambiar el tamaño" con controles de tamaño.

Respondido el 08 de enero de 11 a las 23:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.