Vamos a tumbar el diseñador visual. Es muy sencillo. Creemos un proyecto Windows Forms en C++/CLI y pongamos en la ficha principal dos o tres componentes. Cambiemos entre vista de ficha y vista de código. Hasta ahora todo bien.
Ahora creemos un método como el ejemplo:
void Hola(void)
{
}
Volvamos a cambiar de vista de código a vista de ficha. Todo sigue bien.
Añadamos un nuevo método (sin borrar el anterior):
int Hola(void)
{
return 3;
}
Ahora cambiemos de nuevo a vista de ficha.
¡Tachán!
Los controles han desaparecido. No importa lo compleja o sencilla que sea, los controles han desaparecido.
Volvamos a vista de código y comentemos cualquiera de los dos bloques añadidos.
¡Tachán!
Todo vuelve a la normalidad. Menos mal.
Antes de explicar nada, repitamos pero con ejemplo en C#.
Creemos una aplicación en C#, pongamos unos controles en la ficha y veamos el código. Añadamos lo siguiente:
public void Hola()
{
}
public int Hola()
{
return 3;
}
Y cambiemos a vista de ficha: no ocurre nada, la ficha se ve perfectamente.
Por lo tanto se trata de un bug de editor de fichas del Visual Studio trabajando en C++/CLI.
Explicación
Hemos cometido el mismo error en ambos proyectos, es decir, hemos definido dos métodos sobrecargados cuya única diferencia es el valor de retorno, y eso no se puede hacer ni en C# ni en C++ ni en C++/CLI.
Pero eso no quita que el diseñador visual falle. De hecho el de C# no lo hace, aunque el código sea realmente incorrecto.
Quien quiera jugar con el proyecto, lo puede obtener de aquí.