none
¿Como restar los elementos de un listbox en c#? RRS feed

  • Pregunta

  • Bueno primero que todo mil disculpas por venir a este foro muy continuamente pero estoy empezando en c# y aun estoy en un nivel base, pero bueno voy al punto, mi duda es la siguiente. Tengo elementos en un listbox los cuales estan en HEXADECIMAL y abajo un boton, ya lo veran en la imagen que mostrare acontinuacion:

    Ahora lo que quiero hacer es que al darle a ese button2 se reste cada uno de los elementos por ese numero que esta al costado 1560150016, ese numero es generado aleatoriamente y se muestra en un label, eso es lo que no se como hacer, que al darle al boton reste cada uno de los elementos por el numero ya mencionado y luego de ello que me limpie el listbox y coloque los resultados tal que quede asi:

    Si alguien sabe como hacerlo me ayudaria mucho, saludos y gracias.

    martes, 2 de enero de 2018 19:50

Respuestas

  • Los pasos serían los siguientes:

    1. Recorrer con un bucle la lista de Items del ListBox, tomando cada uno de los Strings que contiene.
    2. Por cada uno de ellos, convertirlo a binario haciendo un "Parse" del valor hexadecimal y guardando el resultado en una variable de tipo integer (o posiblemente unsigned integer si así es como hay que interpretar tus valores hexadecimales a la hora de restarlos).
    3. A cada uno de los números convertidos, restarle el valor que hay en el label (igualmente parseado como integer o unsigned integer, pero esta vez el parseo es desde base 10 y no desde base 16).
    4. Cada uno de los resultados de esa resta conviértelo de nuevo a un String hexadecimal.
    5. Asigna al valor convertido al Item del ListBox que inicialmente leíste en esta iteración del bucle.

    Piensa con cuidado como harías estos pasos, y si hay alguno de ellos que no sepas realizar indícanos aquí cuál es la duda concreta para que sigamos avanzando.

    martes, 2 de enero de 2018 20:28
    Moderador

Todas las respuestas

  • Los pasos serían los siguientes:

    1. Recorrer con un bucle la lista de Items del ListBox, tomando cada uno de los Strings que contiene.
    2. Por cada uno de ellos, convertirlo a binario haciendo un "Parse" del valor hexadecimal y guardando el resultado en una variable de tipo integer (o posiblemente unsigned integer si así es como hay que interpretar tus valores hexadecimales a la hora de restarlos).
    3. A cada uno de los números convertidos, restarle el valor que hay en el label (igualmente parseado como integer o unsigned integer, pero esta vez el parseo es desde base 10 y no desde base 16).
    4. Cada uno de los resultados de esa resta conviértelo de nuevo a un String hexadecimal.
    5. Asigna al valor convertido al Item del ListBox que inicialmente leíste en esta iteración del bucle.

    Piensa con cuidado como harías estos pasos, y si hay alguno de ellos que no sepas realizar indícanos aquí cuál es la duda concreta para que sigamos avanzando.

    martes, 2 de enero de 2018 20:28
    Moderador
  • En realidad no se como hacerlo por eso plantee esta pregunta no se como recorrer los items del listbox con un ble ni lo otro por eso mismo quisiera saber como hacer cada uno de esos pasos para conseguir lo que deseo.
    jueves, 4 de enero de 2018 18:55
  • no se como recorrer los items del listbox con un ble

    Tiene toda la pinta de tratarse de un ejercicio académico. Recuerda que en el foro no te podemos dar la solución final y completa de los ejercicios académicos, todo lo más pequeñas ayudas o guías generales (como los pasos que te indiqué antes), o resolver problemas concretos como por ejemplo si muestras el código que has hecho y te da un error, indicarte la causa del error. Pero no vale con decir "no sé nada, dénmelo todo resuelto".

    En el caso concreto del bucle, fíjate en lo siguiente: Los items del ListBox están en una colección, que se llama nombreDelListBox.Items. Para recorrerlos se usa un bucle foreach, igual que cuando recorres cualquier otra colección:

    foreach (var item in nombreDelListBox.Items)
    {
        // Aquí hacer todos los pasos sobre "item"
    }

    Te lo pongo así para que te des cuenta de que no te estás esforzando lo bastante. Si estás usando un listbox y no sabías que tiene una colección de items, quiere decir que no has leido la documentación del listbox, que es siempre lo primero que debes hacer cuando manejes cualquier control con el que no estás familiarizado. Y una vez que sabes que tiene una colección de items, hacer un bucle que recorra los items es trivial porque para eso existe la instrucción "foreach", que es una de las primeras cosas que tendrías que haber aprendido al estudiar C#; ser principiante no es excusa para conocer el "foreach", es algo que se enseña desde el principio.

    No es que no quiera ayudarte, lo que quiero que te des cuenta es que lo anterior es "asequible", es algo que deberías haber sido capaz de escribir incluso aunque seas principiante, sin más que hacer un pequeño esfuerzo pensando en lo que hay que hacer. Piensa ahora en el resto de los pasos, y fíjate en que cada uno de ellos es muy simple y se consigue con solo usar funciones ya documentadas (básicamente es una línea de código por cada paso). Si algo te falla, pon aquí lo que has pensado y el código que llevas escrito. Por lo menos lo suficiente para que se vea que has trabajado en el ejercicio y nos dé la excusa para poder segur ayudándote sin que dé la impresión de que te estamos dando el ejercicio resuelto por completo.

    viernes, 5 de enero de 2018 9:23
    Moderador