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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Jose Mª Pérez
18/10/2007 - 13:37 | Informe spam
Alberto ya funciona a la perfección. Una vez leido tu post no cabía lugar a
dudas.

Muchas gracias. Un saludo.

"Alberto Poblacion" wrote:

"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.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida