¿Cómo obtener una imagen/icono debajo del diseñador de formularios para mi componente personalizado cuando se agrega en el formulario en modo de diseño?

Estoy usando Visual Studio 2010, C# y WinForms y he creado un componente personalizado como este:

public partial class SlidePanel : Panel 
{
    some code here...
}

Por lo tanto, es una clase de componente, no un control de usuario.

Lo que quiero es cuando arrastro mi componente en el formulario de Windows para obtener un ícono que represente mi componente debajo del formulario. Un ejemplo sería el control de fuente de enlace existente: cuando lo agrega al formulario, aparece un ícono debajo del formulario (en el diseñador de formularios) que puede seleccionar y luego cambiar las propiedades. ¿Cómo puedo hacer esto? El icono puede ser genérico.

preguntado el 28 de julio de 12 a las 18:07

Un Panel es un control, no un componente. -

Ok, ¿puedo hacerlo con control? -

Heredar del componente en lugar del Panel. Pero supongo que eso no es lo que realmente quieres. Si hay tantas cosas en su formulario que no puede encontrarlas en la vista de diseño, entonces tiene demasiadas cosas en su formulario. Encuentre formas de reducir un formulario desordenado, sus usuarios lo apreciarán. -

Gracias por tu esfuerzo, lo estoy haciendo por mí mismo. Así que no hay otras personas trabajando en esto. Básicamente, hice un panel que puede extenderse y reducirse (temporizador para magia) y no tengo tantos controles en el formulario (puedo encontrarlo), pero puedo ver que se puede hacer (vinculando el control de fuente, telerik thema control) y quiero aprender, saber cómo hacerlo. Tengo la fuerte sensación de que no es difícil. Lo he googleado, pero no sé qué buscar. "Imagen/icono de control de usuario que se muestra debajo del diseñador de formularios" no ayudó :( -

Heredar del componente hizo el truco, ves que tenía razón, fue fácil :). Gracias. Ahora sé cómo descifrar cómo combinar componente y panel :). -

2 Respuestas

Por lo tanto, es una clase de componente, no un control de usuario.

No, tampoco lo es. Todavía es un control de panel, acaba de personalizar su comportamiento. Si esta clase está en un proyecto en su solución, la agregará automáticamente a la caja de herramientas después de compilar. En la parte superior, justo después de la flecha. Si eso no sucede, entonces tiene una configuración incorrecta. Herramientas + Opciones, Diseñador de Windows Forms, General, asegúrese de que AutoToolboxPopulate esté establecido en True.

Si realmente desea lo que describe (icono agregado en la parte inferior), debe crear una clase que derive de Component. Que es un tipo de animal muy diferente, no puede tener una representación visual en la forma. Ciertamente no puede parecerse a nada como un panel. Ver esta respuesta para un ejemplo.

contestado el 23 de mayo de 17 a las 11:05

este es el caso cuando lo derivo del componente. Ahora lucho para que funcione como un panel. Lástima que C# no admita múltiples derivaciones: Componente, Panel. No puedo encontrar ninguna buena información, instrucciones en la red sobre cómo hacerlo. ¿Qué necesito implementar para dibujar en modo de diseño mi componente? - Begl4

y lo veo en mi caja de herramientas, justo cuando lo agrego en el formulario, necesito ver el ícono debajo del diseñador de la instancia actual del componente agregado. (Si está reducido, entonces no puedo verlo, es por eso que necesito el ícono a continuación, así que no tiene que buscarlo manualmente) - Begl4

Lo siento, malinterpretas fatalmente la diferencia entre componentes y controles. No estoy muy seguro de cómo superar ese bloqueo mental, debería ser obvio que "en el fondo" no es lo mismo que "en la forma". Dentro de un año, usted totalmente Consíguelo. - Hans Passant

Sé que es muy tarde, pero estaba leyendo las mismas preguntas y esta me llamó la atención. Supongo que aquí lo que está tratando de hacer es tener un Control en su Formulario que puede reducir en el Diseñador. Como resultado esto hará que el Control desaparezca del Formulario. Al tener un Componente debajo del Formulario, aún puede editar sus Propiedades seleccionando el Componente.

Mi pensamiento estaba probando un ControlDesigner. No estoy seguro de si esto funcionará y no es una solución trivial y no tengo tiempo en este momento para trabajar en ello, pero hay dos formas en las que podría ir aquí.

Uno: ControlDesiger le permitirá ocultar propiedades, de modo que cuando las configure en el Diseñador no tengan ningún efecto, es por eso que los Controles que configuró como invisibles permanecen visibles en el Diseñador. Una propiedad sombreada no tendrá ningún efecto o tendrá el efecto que usted proporcione, pero luego actualizará la propiedad real cuando se serialice.

Dos: es posible que pueda crear dinámicamente un Componente en el Diseñador de control y agregarlo al Formulario cuando agregue su Control derivado del Panel. Luego, cuando establece una Propiedad en su Componente, este cambio se puede reflejar en su Control. Hice algo similar hace unos años solo para perder el tiempo, pero no dediqué mucho tiempo a hacer que funcionara correctamente, por lo que es posible que no suceda.

Solo algunos pensamientos

dannyhut

respondido 18 mar '17, 01:03

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