elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1]
1  Programación / .NET (C#, VB.NET, ASP) / Mover Panel que tiene ScrollBar con las teclas, y que se actualice el ScrollBar en: 11 Septiembre 2015, 04:54 am
;D

Hola, espero que me ayuden con este problema.

Tal y como lo dice el titulo, quiero mover un panel que tiene un srollbar, dentro de este panel hay un picturebox. Quiero que el panel se mueva al pinchar las teclas (a, d, w, s (intente con las teclas UP, DOWN, LEFT, RIGHT. pero no fue posible porque tenia un numericUPDown en el form y tomaba estas teclas para él)), lo hice con el siguiente código, pero cuando pinchaba la tecla se movia solo la image, y el scroll se quedaba quieto; si pinchaba nuevamente la tecla, se movia el scroll, pero no la imagen, y así susecibamente.

Código
  1. private void frmDrawing_KeyPress(object sender, KeyPressEventArgs e)
  2.       {
  3.            e.Handled = true;//Quita el sonido beep
  4.            switch (e.KeyChar) //si presiona las teclas
  5.            {
  6.                case 'w':
  7.                    pnlFrontal.VerticalScroll.Value -= (pnlFrontal.VerticalScroll.Value >= movScroll) ? movScroll : pnlFrontal.VerticalScroll.Value;//Operador ternario
  8.                    break;
  9.                case 's':
  10.  
  11.                    pnlFrontal.VerticalScroll.Value += (pnlFrontal.VerticalScroll.Value <= (maxVerScroll-movScroll)) ? movScroll : -pnlFrontal.VerticalScroll.Value + pnlFrontal.VerticalScroll.Maximum;
  12.                    break;
  13.                case 'a':
  14.                    pnlFrontal.HorizontalScroll.Value -= (pnlFrontal.HorizontalScroll.Value >= movScroll) ? movScroll : pnlFrontal.HorizontalScroll.Value;
  15.                    break;
  16.                case 'd':
  17.                    pnlFrontal.HorizontalScroll.Value += (pnlFrontal.HorizontalScroll.Value <= (maxHorScroll-movScroll)) ? movScroll : pnlFrontal.HorizontalScroll.Value;
  18.                    break;
  19.                case 'x':
  20.                    System.Windows.Forms.MessageBox.Show("Posicion de la imagen X = "+pboxGrid.Location.X.ToString()+"\nPosicion del Scroll X = "+pnlFrontal.HorizontalScroll.Value.ToString());
  21.                    break;
  22.                default:
  23.                    e.Handled = false;//No se trato la letra o tecla
  24.                    break;
  25.            }
  26.            //pnlFrontal.Refresh();
  27.        }
  28.  

Observe el funcionamiento del programa en el modo depurador, y efectivamente pasa eso a nivel de variables. Primero se actualiza la posicion de la imagen, pero no el scroll
(1); En la segunda pinchada se actualizaba el scroll, pero no la imagen(2).

(1) Valores que cambian en la primera pinchada de la tecla d(ScrollBar Horizontal)

Código
  1. AutoScrollPosition {X = -10 Y = 0} System.Drawing.Point //cambio :)
  2. DisplayRectangle {X = -10 Y = 0 Width = 1100 Height = 1100}System.Drawing.Rectangle//cambio :D
  3.  
  4. HorizontalScroll.Value      0             int //no cambia  >:(
  5.  

(2) Valores que cambian en la segunda pinchada de la tecla d(ScrollBar Horizontal)

Código
  1. AutoScrollPosition {X = -10 Y = 0} System.Drawing.Point //No cambio
  2. DisplayRectangle {X = -10 Y = 0 Width = 1100 Height = 1100} System.Drawing.Rectangle//No cambio
  3.  
  4. HorizontalScroll.Value      10     int //Cambio
  5.  

No logro comprender por que pasa eso  :-\


Si tienen otra solución o estoy cometiendo algún error agradezco su explicación.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines