Título: Problemas con objeto y listbox en vs 2015 Publicado por: Yaldabaot en 22 Marzo 2019, 22:25 pm Saludos amigos, soy yo nuevamente molestando, tengo un problema con un listbox.
Verán, estoy haciendo una aplicación dónde esta cargue 3 rutas de un archivo sobre un objeto, posteriormente cuando ese objeto esté "relleno" lo inserto en un listbox, el problema se inicia cuando quiero obtener el valor de ese listbox el cuál según el vs el valor es nothing pero curiosamente a la hora de depurarlo los valores me dice que se ha rellenado correctamente. Este es el código del objeto Código
Aquí es dónde lo inserto mediante unos diálogos y un botón. Código
Mediante un menústrip de un contextmenú o menú contextual genero un pequeño dialogo y lo que hago es que quiero mostrar la información de ese objeto (que por cierto sería genial si alguno de uds sabe como ponerle texto más "bonito" a ese objeto en ese listbox sin alterar su valor como un combobox con sus propiedades de display member). Código
Curiosamente cuando lo depuro cómo les menciono arriba me dice que el objeto está correctamente insertado y tiene un valor pero a la hora de "jalarlo" no me sale nada, me preocupa porque necesito manipular ese objeto para el resto del proyecto, si uds saben algo se los agradecería demasiado. Título: Re: Problemas con objeto y listbox en vs 2015 Publicado por: Yaldabaot en 23 Marzo 2019, 21:38 pm Ya pude, lo dejo para que otros si tienen la duda puedan resolverlo...
Código
Y ya con la variable "obj" pueden jugar. Ahora bien, lo que no he podido hacer aún es lo siguiente: Quiero que cuando se inserte ese objeto en lugar de decir el nombre del objeto diga "Archivo1,Archivo2", lo que hice fue cambiar el método toString para que diga archivo pero quiero tener un contador para así el usuario pueda diferenciar entre los objetos del listbox. Lo que hice fue esto: Código
Lógicamente agregué el atributo "str_mostrar_texto" en la clase así como sus gets y sets. Entonces no se si alguno tendrá alguna sugerencia? ya lo intenté con un integer global pero no suma el contador y en todas da 0. Muchas gracias desde ya. Título: Re: Problemas con objeto y listbox en vs 2015 Publicado por: Eleкtro en 24 Marzo 2019, 13:51 pm Carece de sentido que en el diseño de la clase "Archivos" implementes un contador de ningún tipo, ya que si no te he entendido mal, la clase archivos se supone que sirve para representar una serie de rutas de archivos que están relacionados entre si, pues bien, eso es correcto, pero en ese caso eso sería todo lo que debes hacer con esa clase...
Así que deberías dar el diseño de esa clase por finalizado, y a partir de ahí eres tú el que debe declarar un contador (fuera de la clase "Archivos") y añadir/mostrar ese contador al añadir cada uno de esos items al ListBox, no al revés, es decir, no debe ser la clase "Archivos" la que deba representar por si misma y mostrar un índice al ser representado como texto ( Archivos.ToString() ) en un control, eso es mezclar cosas que no tienen nada que ver, y por ende no tiene sentido productivo. No se si me he explicado suficientemente bien. De todas formas no tengo muy claro por que sientes la necesidad de usar una variable-contador que actue como índice de los items representados en el listbox, es decir, el índice del elemento lo puedes obtener directamente en la lista de elementos de dicho ListBox y mostrarlo si quieres junto al nombre del elemento, algo como por ejemplo: Código
...o en su defecto siempre puedes añadir las instancias de la clase "Archivos" a un diccionario u otra colección apropiada para tus necesidades, en la que usar la "llave" como índice, y luego mostrarlo al añadir el valor/elemento en el listbox. Pero en fin. Dices que ya lo intentaste con un "integer global" (imagino que te refieres a que usaste el modificador de visibilidad Public Shared) pero "no suma el contador y en todas da 0". Todo esto no se entiende mucho. Para empezar, no se sabe donde lo declaraste, ni cuando y como incrementas su valor, pero algo parece evidente, y es que si su valor siempre es 0, será que la unidad de código donde incrementas el valor nunca se llega a ejecutar, o si se ejecuta pero en realidad no llegas a incrementar el valor. No se pueden sacar otras conclusiones mientras no aportes más información. Saludos. Título: Re: Problemas con objeto y listbox en vs 2015 Publicado por: Yaldabaot en 24 Marzo 2019, 19:51 pm Muchas gracias elektro por responder, siempre con mucho conocimiento por dar y aprendo mucho de tu persona.
Mira, lo único que quiero que cuando agregue ese objeto al listbox no aparezca como texto en cada item el valor del objeto, es decir NO quiero que aparezca como "nombredel proyecto.objeto" sino que en ese texto aparezca como archivo1, archivo2,archivo3 sin alterar lógicamente sus atributos. La variable local la declaré tanto en la clase del form dónde estaba ese listbox como erroneamente tambien en ese objeto. Lo intenté con el método toString() para en lugar de "nombredelproyecto.objeto" se mostrara Archivo pero queria concatenarle un contador que se fuera incrementando, pero no lo logré. Título: Re: Problemas con objeto y listbox en vs 2015 Publicado por: Yaldabaot en 26 Marzo 2019, 17:28 pm Luego de un montón de intentos lo logré!! ;-).
En el método del constructor del objeto archivo lo agregué cómo parámetro: Código
Posteriormente en el form, declaré la variable como pública: Código
Modifiqué el método para que tuviera como parámetro la variable: Código
LLamé al método en el botón: Código
Agregándolo finalmente así al listbox: Código
Gracias por leerme. Título: Re: Problemas con objeto y listbox en vs 2015 Publicado por: Eleкtro en 26 Marzo 2019, 19:55 pm Primero que nada, y disculpa que te lo diga pero es que realmene se me hace horrible ver tanto guión bajo junto. No se como tú te entiendes con eso, pero a mi se me hace muy dificil/tedioso la lectura de tanto guión bajo.
El caso es que no estás siguiendo las convenciones de nomenclaturas recomendadas para la programación .NET, y sin entrar mucho en detalle te puedo decir que basicamente consiste en usar Camel case para casi todos los tipos de miembros indiferentemente de su modificador de visibilidad (excepto algunos casos, pero ya dije que sin entrar en muchos detalles). Aparte de eso, yo en tu lugar sellaría la clase Archivos, quitaría la asignación de un valor inicial (innecesario) en los campos str_*, y los constructores los dejaría así: Código
...eso suponiendo que realmente quieras declarar un constructor por defecto sin parámetros, de lo contrario: Código
Es más, esas 70 lineas que ocupa la clase Archivos lo puedes simplificar a 15 o 20 lineas declarando auto-propiedades, en lugar de declarar propiedades con su getter y setter y su campo de apoyo o backing field, resulta innecesario en ese diseño de clase Archivos, pero bueno, eso no te lo he mostrado por que ahora mismo no recuerdo si fue a partir de Visual Studio 2015 / VB.NET 14.0 o cuando se implementó esta característica, o fue a partir de Visual Studio 2017 / VB.NET 15. Curiosamente cuando lo depuro cómo les menciono arriba me dice que el objeto está correctamente insertado y tiene un valor pero a la hora de "jalarlo" no me sale nada, me preocupa porque necesito manipular ese objeto para el resto del proyecto, si uds saben algo se los agradecería demasiado. Debes usar la propiedad ListBox.SelectedItem en vez de ListBox.SelectedValue, ya que no especificaste ningún miembro para la propiedad ListBox.ValueMember, normal que te salte una excepción de referencia nula... Te muestro un ejemplo reducido: Código
Saludos Título: Re: Problemas con objeto y listbox en vs 2015 Publicado por: Yaldabaot en 27 Marzo 2019, 15:35 pm Gracias elektro, tomaré en cuenta las recomendaciones, y no, no uso 2017, no lo tengo, el que estoy usando es el 2015.
|