none
Databinding en un ProgressBar de Windows Forms RRS feed

  • Pregunta

  • Tengo una solución de tres proyectos (Vista - Negocio y Datos) en la vista un Form con un objeto ProgressBar, en una funcionalidad del programa tengo un proceso a la base datos que es una transacción y procesa varias querys (inserts y updates).

    Lo que quiero es ir llenando el ProgressBar de acuerdo a este avance, pero no puedo hacer referencia a Vista desde Datos (Referencia Circular), entonces leí que la propiedad Bindable serviría, pero no se usarla.

    Basicamente, tengo una clase de entidad en la capa de Negocio, que enlaza al control Bindable de ProgressBar.

    La clase es super simple y tiene 2 propiedades (MaximoPB y PasoPB), mi idea que mientras había un ciclo en la capa de datos ejecutando querys, dentro de este ciclo yo instanciaría la clase EParametro (asi le puse) y este cambio sería escuchado por el bindable en la capa vista.

    La capa de negocio con la clase EParametro, la hice siguiendo los pasos de una explicacion de este mismo sitio:
    https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-implement-property-change-notification

    Pero no veo cambios, quizás ni siquiera es lo que necesito lo que estoy haciendo, cualquier ayuda se agradece.


    Saludos

    lunes, 7 de enero de 2019 19:16

Respuestas

Todas las respuestas

  • hola

    >>Lo que quiero es ir llenando el ProgressBar de acuerdo a este avance, pero no puedo hacer referencia a Vista desde Datos

    un progreso real no se puede realizar, porque no sabes cuanto taradaran en ejecutar las queries

    pero si ejecutas en un thread para no bloquear la UI podrias mostrar un progress en marquee que indique trabajo

     progressBar con Marquee mientras cargo datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 7 de enero de 2019 20:47
  • Gracias Leandro, voy a investigar lo que me recomiendas.

    Con respecto a no saber el tiempo de las querys es cierto, pero quizás no es tan importante de acuerdo con la idea que tenía, por ejemplo si tengo 10 registros en la grilla cuando le doy click a mi función procesar_registros por cada registro se generan unos 7 querys de insert y update, en este caso serían 70 operaciones. Entonces mi idea era fijar el progressBar en maximo=70, con paso=1 y un label que indicará el proceso que se esta ejecutando.

    La función en la capa datos es una transacción a la que le paso una lista de querys que recorro y ejecuto, en este ciclo mi idea era capturar la información y ponerla en alguna parte donde pudiera ser escuchada.
    Lo importante para el usuario no sería saber el tiempo exacto que tardará, sino como el progressBar avanzaría en función de las operaciones que se deben hacer.

    Saludos y gracias nuevamente

    Saludos

    martes, 8 de enero de 2019 4:00