Aparicion Scrool en WinForm

18/10/2007 - 12:27 por Jose Mª Pérez | Informe spam
Muy buenas a todos.

Mi problema es el siguiente. Tengo un Panel al que se pueden arrastrar
distintos controles mediante drag&drop. A la vez, entre dichos controles, el
usuario puede realizar una relación que se "dibuja" de la siguiente forma:

Graphics panelPaint = panel1.CreateGraphics();
panelPaint.DrawLine(Lapiz, tr.GetPuntoOrigen(), tr.GetPuntoDestino());

Para disponer del mayor espacio posible establezco la propiedad "AutoScroll"
del panel1 a true. El problema surge cuando aparecen/desaparecen los scroll,
ya que produce un evento, o algo parecido, que deja los controles como
estaban pero hace desaparecer todas las lineas que hubiera dibujadas.
Controlando este evento o incluso el vaya justo después sería suficiente para
volver a dibujar lo que haga falta.

El Panel se encuentra dentro de un Formulario. ¿Alguna idea?

Gracias de antemano. Un saludo.
 

Leer las respuestas

#1 Alberto Poblacion
18/10/2007 - 12:56 | Informe spam
"Jose Mª Pérez" <Jose Mª Pé wrote in message
news:
Mi problema es el siguiente. Tengo un Panel al que se pueden arrastrar
distintos controles mediante drag&drop. A la vez, entre dichos controles,
el
usuario puede realizar una relación que se "dibuja" de la siguiente forma:

Graphics panelPaint = panel1.CreateGraphics();
panelPaint.DrawLine(Lapiz, tr.GetPuntoOrigen(), tr.GetPuntoDestino());

Para disponer del mayor espacio posible establezco la propiedad
"AutoScroll"
del panel1 a true. El problema surge cuando aparecen/desaparecen los
scroll,
ya que produce un evento, o algo parecido, que deja los controles como
estaban pero hace desaparecer todas las lineas que hubiera dibujadas.
Controlando este evento o incluso el vaya justo después sería suficiente
para
volver a dibujar lo que haga falta.




Utiliza el evento Paint del Panel. Este evento se dispara cuando Windows
necesita que se repinte el contenido del panel, y ahi dentro debes hacer
todo el dibujo de las lineas. El objecto Graphics te llegará ya creado
dentro del PaintEventArgs, así que no tienes que hacer el CreateGraphics. Si
quieres disparar a mano el evento (por ejemplo, cuando agregues un nuevo
control al panel y quieras dibujar las lineas), llama al método Invalidate()
del Panel.

Preguntas similares