2009-07-22 17 views
7

Hice un control que hereda directamente de ErrorProvider. Pensé que aplicar el atributo ToolboxBitmap sería suficiente para que mi control tenga el mismo ícono en la caja de herramientas que el control original, pero no es así. Es extraño, como si agregara el control al formulario, aparecerá tal como debería, pero no cambia el ícono de la caja de herramientas. ¿Que me estoy perdiendo aqui? Ya reinicié Visual Studio y mantiene este comportamiento.Tener mi control de usuario tiene su propio icono en la caja de herramientas

[ToolboxBitmap(typeof(ErrorProvider))] 
public class ErrorProviderEx : ErrorProvider { 
... 
} 
+0

Solo para FYI: este tipo de controles son Web Custom Controls (WCC), no Web User Controls (WUC). Los WUC son archivos ascx que se utilizan en todo el proyecto web, el WCC se usa en toda la máquina ... Por lo tanto, en su caso, debe escribir WCC en su pregunta, solo para no confundir a los demás. –

+1

No sé de qué estás hablando. Esto es System.Windows.Forms.ErrorProvider. –

+0

Si proporciona una ruta de acceso "codificada" al mapa de bits (ToolboxBitmap ("c: \\ my.bmp") ¿todavía muestra el mapa de bits predeterminado? –

Respuesta

5

En Visual Studio 2008, el icono especificado por ToolBoxBitmap no se agrega a la caja de herramientas para ninguno de los componentes de la solución actual por motivos de rendimiento. El icono estándar de 'engranaje' se usa. Si agrega manualmente su ensamblaje a través del cuadro de diálogo ... Agregar elementos ..., se mostrará el icono personalizado que es el comportamiento que está experimentando. Además, cuando arrastra ErrorProviderEx a un formulario, se utilizará el icono que especificó, que de nuevo es el comportamiento que anotó en un comentario.

Tenga en cuenta, en su caso, está utilizando typeof(ErrorProvider) por lo que no tendrá los problemas normales de uso de un mapa de bits personalizado.

(Este comportamiento también puede ser cierto para Visual Studio 2005. Visual Studio 2003 nos echó a perder al mostrar el icono.) (Personalmente no me gusta este nuevo comportamiento. Estoy dispuesto a esperar un segundo o dos extra para el IDE para recuperar el icono para todos los controles y los componentes de la solución. me pregunto si hay un corte del registro para mostrar los iconos.)

+0

Este sigue siendo el comportamiento actual a partir de VS 2010. No hay registros de piratas que conozco han surgido. –

+0

Sigue igual en VS 2013. – peterincumbria

2

¿Está en el mismo proyecto? ¿O un dll al que hace referencia?

Sólo se tiene iconos adecuados cuando referncing una DLL fijo. Intente construir un dll de control y hacer referencia a él.

+0

Ah. Está en otro proyecto, en la misma solución. Entonces, ¿no hay solución? –

1

así que hay una solución alternativa. Supongamos que su UserControl está en el proyecto "MyControl", agregue una referencia a sí mismo. Es decir: Refiere el proyecto MyControl en el proyecto MyControl, como lo harías en otro proyecto. Luego, el ícono también se mostrará en la Caja de herramientas de ese proyecto MyControl.

0

La forma más fácil de asegurarse de que un icono de la barra de herramientas aparecerá es crear un archivo BMP 16x16, lugar que en la carpeta de proyectos de su control, a continuación, configurarlo como un recurso incrustado.

Sigamos un ejemplo relativamente simple: Supongamos que tiene un componente llamado MyCompany.Components.MyControl. Crear un mapa de bits de 16x16 una guardarlo en la raíz de la carpeta del proyecto MyCompany.Components.MyControl como MyControl.bmp. A continuación, haga clic con el botón derecho en el archivo MyControl.bmp y seleccione Propiedades> Acción de compilación> Recurso incrustado. En ese punto, tiene un paso más: agregue el atributo ToolboxBitmap encima de la definición de su clase (si utilizo clases parciales, ubico el atributo en el archivo .cs principal del control, no en el archivo Designer.cs). Para ello, utilice la siguiente sintaxis:

[ToolboxBitmap(typeof(MyControl), "MyControl.bmp")] 

estar absolutamente seguro de que:

  • El espacio de nombres para su clase de proyectos MyControl coincide con la estructura de carpetas para su proyecto, donde aparece en la solución.
  • Puede parecer obvio, pero asegúrese de haber citado el nombre correcto para su archivo bmp.

Su mapa de bits debe aparecer cada vez que su control se agrega a una caja de herramientas, ya sea que se agregue manualmente o se agregue mediante programación.

Cuestiones relacionadas