Título: Corregir o quitar elementos del comBoBox Publicado por: Meta en 6 Abril 2021, 19:33 pm Hola:
Quiero añadir unidades detectadas de si hay lectores en un PC o ordenador. Cada vez que me detecta dos lectores en el comboBox me lo rellena así: F : G : Como cuatros elementos cuando en realidad son dos y debe mostrarlos así: F: G: Me da igual si solo también se queda como abajo. F G ¿Hay alguna forma de corregir estas cosas? Saludos. Título: Re: Corregir o quitar elementos del comBoBox Publicado por: K-YreX en 6 Abril 2021, 23:23 pm Sin tener más datos sobre cómo lo has implementado, la solución más genérica que se me ocurre es comparar si el valor es igual a ":" antes de agregarlo al combobox y en caso afirmativo, ignorar ese elemento.
Viendo el código de esa parte del programa igual se puede obtener una solución más "limpia" por decirlo de alguna manera. Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 6 Abril 2021, 23:44 pm Lo intenté hacer con remove al comoBox, se borra, pero cuando encuentra otra unidad sigue el problema.
Código
Título: Re: Corregir o quitar elementos del comBoBox Publicado por: K-YreX en 7 Abril 2021, 07:29 am Claro, si digamos que en <datos> tienes algo como:
Código: C:D:F: Código: C Otra solución: Código Resultado: Código: C Código O mediante un for() y el método Substring() o similares para recoger dos caracteres en vez de uno. Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 7 Abril 2021, 11:01 am No se que pasa.
En vez de verse: F: G: En el comboBox, aparece esto. (https://social.msdn.microsoft.com/Forums/getfile/1660120) Ver imagen (https://social.msdn.microsoft.com/Forums/getfile/1660120). En este otro código de abajo, solo se me ve así: G: : ¿Dónde está la F:? ;D Código
Saludos. Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Serapis en 7 Abril 2021, 18:16 pm Es aún más sencillo, en NET muchas colecciones admiten la adicion de un array directamente con 'AddRange', lo que nos evita la necesidad de usar un bucle...
Código
Si además quieres que aparezcan los dos puntos, es preferible modificar el string de entrada, remplazando los dos puntos por los puntos y un espacio (y entonces hacer el Split por el espacio). Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 7 Abril 2021, 19:17 pm La idea es que me detecte las unidades de disco que tengo instalada o detectada. ;)
Título: Re: Corregir o quitar elementos del comBoBox Publicado por: K-YreX en 7 Abril 2021, 19:19 pm No se que pasa. Por un lado, no se puede ver la imagen. Ni en el cuadro de imagen ni mediante el enlace de "Ver imagen".En vez de verse: F: G: En el comboBox, aparece esto. (https://social.msdn.microsoft.com/Forums/getfile/1660120) Ver imagen (https://social.msdn.microsoft.com/Forums/getfile/1660120). En este otro código de abajo, solo se me ve así: G: : ¿Dónde está la F:? ;D Código
Saludos. Y por otro lado, si no se muestra correctamente la F tiene que ser porque en la variable <datos> no está bien guardado. Si el resultado ha sido: Código: G: Prueba a imprimir el contenido de <datos> para comprobarlo. Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Serapis en 7 Abril 2021, 20:47 pm La idea es que me detecte las unidades de disco que tengo instalada o detectada. ;) Usa GetDevices... quizás tengas que añadir una referencia al ensamblado.Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 7 Abril 2021, 22:56 pm Si lo hago así:
Código
Me di cuenta que en dato primero pone F: Luego hace otra pasada en el código de abajo. Código
Y se pone en G: borrando la F: Título: Re: Corregir o quitar elementos del comBoBox Publicado por: K-YreX en 7 Abril 2021, 23:52 pm Claro, entonces el problema estaba en que no se estaba guardando en <datos> todas las unidades sino que se van sobreescribiendo en cada iteración. Entonces tienes que concatenar todo y preferiblemente como dice Serapis añadiendo un espacio entre cada unidad para separarlos mediante el espacio y mantener los dos puntos...
Código
Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 8 Abril 2021, 01:29 am Funciona mejor, casi perfecto. ;-) ;-) ;-) ;-) ;-) ;-)
Ahora pone: G: F: Espacio enblanco No se que pinta en el último elemento un espacio en blanco, queda feo. Solo hace falta corregir ese último detalle. Lo demás, perfecto. :silbar: :silbar: :silbar: :silbar: :silbar: Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Danielㅤ en 8 Abril 2021, 02:29 am Hola, si aparece una línea vacía al final del combobox debe ser porque hay un salto de línea al final del string, algo como:
C:D:E:F:\n o también puede ser porque el Split no está operando como debería o puede que el código esté detectando una unidad que no existe. Saludos Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 8 Abril 2021, 11:40 am Buenas gente:
Desde que llegue en el depurador hasta aquí indicado. Código
Se añade un espacio por la cara. (https://i.postimg.cc/jSPSrBmz/ComoBox.png) Saludos. Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Danielㅤ en 8 Abril 2021, 16:25 pm Hola, prueba a poner al final del Split:
Código: System.StringSplitOptions.RemoveEmptyEntries o Código: StringSplitOptions.RemoveEmptyEntries Eso lo tenés que poner como parámetro en tu Split();. Saludos Título: Re: Corregir o quitar elementos del comBoBox Publicado por: K-YreX en 8 Abril 2021, 20:24 pm Exactamente, como dice [D]aniel se soluciona.
Como estás añadiendo un espacio después de cada unidad, te queda una cadena como esta (sustituyo cada espacio por un _): Código: datos = "G:_F:_" Otra solución válida es: Código
Título: Re: Corregir o quitar elementos del comBoBox Publicado por: Meta en 9 Abril 2021, 22:51 pm Funciona.
Código
Me he dado cuenta que en el otro programa más grande no. Ya no me dice si tiene disco o no. Código
Título: Re: Corregir o quitar elementos del comBoBox Publicado por: K-YreX en 10 Abril 2021, 01:11 am Normal que en el segundo código no funcione si estás intentando comparar el contenido de <datos> a "True" (línea 74) cuando no estás guardando "True". Y tú me dirás que sí, que en la línea 71 llamas a la función y guarda "True" en <datos> pero entonces yo te diré "y qué pasa con el espacio que estás añadiendo al final?? (línea 62)"
Por otra parte decir que ese código tiene demasiado acoplamiento. Utilizas todo el tiempo la misma variable <datos> para guardar cada uno de los resultados. Es mejor que la función devuelva un string con el resultado y ya tú lo asignarás a la variable que quieras en cada momento. Una mejor opción sería algo como esto: Código
|