2011-02-16 18 views
5

Tengo una aplicación .NET ya existente con toneladas de controles ya creados.reemplazar el control existente con clase personalizada .NET Winforms

Ahora tengo una nueva clase de control personalizada para, por ejemplo, botones (que hereda de "Botón"), con propiedades adicionales, métodos, etc. Compilado bien, y se muestra en mi barra de herramientas.

¿Cómo puedo decirle a VS que quiero REEMPLAZAR controles existentes con el nuevo?

Quiero decir, si abro el código de diseñador y cambio manualmente el tipo de control, VS es realmente infeliz y el diseño está roto y hacia abajo con un desagradable mensaje de error.

¿Hay alguna manera de cambiar el código generado por el diseñador sin romper el diseño en VS?

O ¿Existe alguna otra forma de hacerlo que no sea eliminar manualmente cada control y crear uno nuevo? Esto sería una verdadera molestia ya que todos los controladores del control se borrarán en el código del formulario cuando elimine el control. Al igual que:

maneja myControl.Click ... asas myControl.MouseHover ... etc

Cualquier punta de bienvenida!

+0

¿Qué dice el mensaje de error desagradable? – Justin

+0

El desagradable error es una especie de VS "pantalla azul" que indica que el formx no se puede mostrar debido a algunos errores en formx.designer.vb, porque el código generado automáticamente ha sido alterado y no debería (t editado. Por ejemplo, digamos que hay una etiqueta en el diseñador: Dim CityLabel As System.Windows.Forms.Label y la reemplazo con DIm cityLabel como myProject.SpecialLabel. Luego aparece el error. Tenga en cuenta que también reemplacé el Friend with Event parte del código de diseñador para declarar la etiqueta con mi propia clase ... –

Respuesta

0

Puede hacer una búsqueda y reemplazar en VS con el alcance "Proyecto actual". Asegúrate de haber marcado el cuadro "Buscar texto oculto" (esto incluirá el código generado por el diseñador). Luego intente compilar el proyecto, si hay algún error (por ejemplo, propiedades faltantes), esos errores se pueden corregir de la misma manera.

2

Complete el procedimiento siguiente.

Haga una copia de seguridad!

Ir a la ventana del explorador de soluciones (Ctrl Alt L es el acceso directo) y hacer clic en el botón "Mostrar todos los archivos". Seleccione la forma en que desea hacer el reemplazo de control. Haz clic en el pequeño triángulo para mostrar el archivo "designer.vb".

Ábralo.

Busque la instancia de control que desea reemplazar. de verificación de los casos de:

Me.ControlToBeReplaced = New System.Windows.Forms.TypeOfControlToReplace() 

Sustituto de su definición de control. hacer lo mismo para todas las apariciones de:

Friend WithEvents ControlToBeReplaced As System.Windows.Forms.TypeOfControlToReplace 

generar la solución de

+0

¿De verdad crees que no he hecho eso? Por favor, vuelve a leer la pregunta ... –

+2

Tuve tu mismo problema y lo resolvió de esta manera ... –

+1

Funcionó para mí. Tenga en cuenta que el último paso (crear su solución) es importante. +1 – ForeverWintr

Cuestiones relacionadas