none
¿Se puede dejar la tabla de un control DataGridView exactamente en la misma posición horizontal? (explico) RRS feed

  • Pregunta

  • Tengo una Lista asociada a un DataGridView. Para ordenar una columna, ordeno la columna en la lista y vuelvo asignar la lista a la propiedad DataSource para que se refleje el cambio. 

    Uso la propiedad FirstDisplayedScrollingColumnIndex para que sea siempre visible la columna que se acaba de ordenar, funciona pero ocurre que si por ejemplo la columna antes de ordenarla no está totalmente visible o si estaba delante de otras columnas visibles se produce un desplazamiento y la columna inicia siempre al margen izquierdo.

    La consulta es si no hay forma de obtener el valor X correspondiente al desplazamiento horizontal, para luego de reasignar la propiedad DataSource restaurar dicha posición o alguna otra forma de dejar la tabla en el mismo desplazamiento.


    • Editado James2016-2 martes, 16 de febrero de 2021 18:41
    martes, 16 de febrero de 2021 18:40

Respuestas

  • Yo me pregunto y yo me respondo, je, je.

    Haciendo mil pruebas lo pude conseguir. A quien le sirva:

    Para eso sirve la propiedad HorizontalScrollingOffset y es bastante precisa. Para sincronizar una barra de scroll externa, por ejemplo, solo hay que ponerle a la propiedad Maximum la diferencia entre el ancho de las columnas visibles y el ancho del control DataGridView y walá! se desplaza con precisión y se puede especificar también un valor de desplazamiento.

    Y para dejar la tabla en la misma posición donde quedó solo basta guardar el valor previo antes de que se produzca el desplazamiento y luego reasignar dicho valor y queda exactamente en la misma posición.



    lunes, 22 de febrero de 2021 4:59

Todas las respuestas

  • Hola James,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 16 de febrero de 2021 21:37
    Moderador
  • Yo me pregunto y yo me respondo, je, je.

    Haciendo mil pruebas lo pude conseguir. A quien le sirva:

    Para eso sirve la propiedad HorizontalScrollingOffset y es bastante precisa. Para sincronizar una barra de scroll externa, por ejemplo, solo hay que ponerle a la propiedad Maximum la diferencia entre el ancho de las columnas visibles y el ancho del control DataGridView y walá! se desplaza con precisión y se puede especificar también un valor de desplazamiento.

    Y para dejar la tabla en la misma posición donde quedó solo basta guardar el valor previo antes de que se produzca el desplazamiento y luego reasignar dicho valor y queda exactamente en la misma posición.



    lunes, 22 de febrero de 2021 4:59