2012-05-31 78 views
5

Proyecto Windows Forms, que solo funciona en diseñador (es decir, con mouse, antes de la compilación). Tengo un Formulario y 2 Paneles en él. panel1 está acoplado (opción - llenar) en form1. panel2 está acoplado (relleno) en form1, también. Además, el panel2 está delante del panel1 (este último está oculto detrás del anterior). Mi problema es que cuando desacopla el panel2 y lo vuelvo a acoplar, se acopla en el panel1 (el panel1 se convierte en el principal) y no en el form1. ¿Cómo puedo cambiar el padre del panel2?C# Problema de acoplamiento al panel

La única solución que encontré hasta ahora es cortar (ctrl + x) panel2, seleccionar form1 y luego pegar (ctrl + v) panel2, pero esto, por alguna razón, elimina todas las conexiones entre los controles del panel2 y el código (por ejemplo, hacer clic en el botón del panel2 ya no funciona, aunque la función que maneja el evento todavía está allí).

¿Alguna idea mejor?

+2

Puede desacoplar panel1, a continuación, pasar panel de dos de panel1 sobre el fondo Form1. He luchado con esto también. ese fue siempre mi trabajo, también encontré que cortarlo y pegarlo causaba muchos haedaches. También se puede arreglar en código, usando el archivo de diseñador –

+0

@ K'Leg Eso se parece mucho a una respuesta válida y correcta para mí ... – gbianchi

+0

@gbianchi Gracias, lo puse como una respuesta ahora, debería empezar a hacer eso en primer lugar. –

Respuesta

6

Cortando controles al portapapeles con cortar los controladores de eventos, por lo que es mejor evitar el corte y pegado en el diseñador.

Dado que está utilizando el diseñador, abra el formulario Document Outline del menú View - Other Windows en Visual Studio. Use los botones de flecha para configurar correctamente el orden primario o de acoplamiento de los controles. ventana Esquema

El documento es como la siguiente:

enter image description here

0

El panel no puede cambiar Padre cuando cambia es dock !!! O realmente no entiendo su problema.

Pero ... si quieres cambiar el padre. Simplemente elimine el panel de la lista de Control del Panel y agréguelo a la lista de Control del formulario.

yourPanel.Controls.Remove(yourOtherPanel); 
yourForm.Controls.Add(yourOtherPanel); 
yourOtherPanel.Dock = .....; 
+0

El usuario está utilizando solo el diseñador .. parece que el código es uselees .. – gbianchi

+0

Agregar código adicional para cambiar el elemento primario, por ejemplo, en Form1_Load parece una solución (y una fea, porque permanece en el producto final). En cuanto a esto: "¡El panel no puede cambiar a Parent cuando cambias es dock !!!" - aparentemente, puede. Supongo que depende de los controles que se encuentran debajo del panel Estoy (no) atracando. – NPS

+0

El panel cambia su padre por lógica, una vez que lo desacopla, lo pone en el panel1, no en el formulario, por lo que lo cambia. – gbianchi

1

parece que la gente le gusta mi respuesta comentado así que estoy poniendo aquí como una respuesta

Puede desacoplar panel1, a continuación, pasar panel de dos de panel1 sobre el fondo Form1. He luchado con esto también. ese fue siempre mi trabajo, también encontré que cortarlo y pegarlo causaba muchos haedaches. También se puede arreglar en código, usando el archivo de diseñador