elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Corregir o quitar elementos del comBoBox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Corregir o quitar elementos del comBoBox  (Leído 8,391 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Corregir o quitar elementos del comBoBox
« 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.


En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Corregir o quitar elementos del comBoBox
« Respuesta #1 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.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Corregir o quitar elementos del comBoBox
« Respuesta #2 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
  1. private void Form1_Load(object sender, EventArgs e)
  2.  
  3. {
  4.    // Nombre de la unidad.
  5.    ConsigueComponentes("Win32_CDROMDrive", "Id");
  6.  
  7.    foreach (char item in datos)
  8.    {
  9.        comboBox_Unidad.Items.Add(item);
  10.    }
  11.  
  12.    // Selecciona la primera unidad.
  13.    comboBox_Unidad.SelectedIndex = 0;
  14.  
  15.    // Limpiar.
  16.    datos = "";
  17.  
  18. }
En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Corregir o quitar elementos del comBoBox
« Respuesta #3 en: 7 Abril 2021, 07:29 am »

Claro, si digamos que en <datos> tienes algo como:
Código:
C:D:F:
Y vas recorriendo y agregando carácter a carácter pues agregarás:
Código:
C
:
D
:
F
:

Otra solución:
Código
  1. string[] unidades = datos.Split(':');
  2. foreach(string unidad in unidades)
  3.  combobox.Items.Add(unidad);
Resultado:
Código:
C
D
F
G
El delimitador (':') no se incluye en las subcadenas. Para incluirlo puedes hacerlo manualmente:
Código
  1. combobox.Items.Add(unidad + ":");
O mediante un for() y el método Substring() o similares para recoger dos caracteres en vez de uno.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Corregir o quitar elementos del comBoBox
« Respuesta #4 en: 7 Abril 2021, 11:01 am »

No se que pasa.
En vez de verse:

F:
G:

En el comboBox, aparece esto.


Ver imagen.

En este otro código de abajo, solo se me ve así:
G:
:

¿Dónde está la F:?  ;D

Código
  1.        void UnidadDisco()
  2.        {
  3.            // Nombre de la unidad.
  4.            ConsigueComponentes("Win32_CDROMDrive", "Id");
  5.  
  6.            // Delimitador.
  7.            string[] unidades = datos.Split(':');
  8.  
  9.            foreach (string unidad in unidades)
  10.            {
  11.                comboBox_Unidad.Items.Add(unidad + ":");
  12.            }
  13.  
  14.            // Selecciona la primera unidad.
  15.            comboBox_Unidad.SelectedIndex = 0;
  16.        }

Saludos.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Corregir o quitar elementos del comBoBox
« Respuesta #5 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
  1. private void button1_Click(object sender, EventArgs e)
  2.        {        
  3.            string[] uds= "C:D:F:G:".Split(':');
  4.            comboBox1.Items.AddRange(uds);
  5.  
  6.            //comboBox1.Items.AddRange(unidades.Split(':'));  //el Split se puede hacer en una sola linea.
  7.        }
  8.  

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).
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Corregir o quitar elementos del comBoBox
« Respuesta #6 en: 7 Abril 2021, 19:17 pm »

La idea es que me detecte las unidades de disco que tengo instalada o detectada. ;)
En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Corregir o quitar elementos del comBoBox
« Respuesta #7 en: 7 Abril 2021, 19:19 pm »

No se que pasa.
En vez de verse:

F:
G:

En el comboBox, aparece esto.


Ver imagen.

En este otro código de abajo, solo se me ve así:
G:
:

¿Dónde está la F:?  ;D

Código
  1.        void UnidadDisco()
  2.        {
  3.            // Nombre de la unidad.
  4.            ConsigueComponentes("Win32_CDROMDrive", "Id");
  5.  
  6.            // Delimitador.
  7.            string[] unidades = datos.Split(':');
  8.  
  9.            foreach (string unidad in unidades)
  10.            {
  11.                comboBox_Unidad.Items.Add(unidad + ":");
  12.            }
  13.  
  14.            // Selecciona la primera unidad.
  15.            comboBox_Unidad.SelectedIndex = 0;
  16.        }

Saludos.
Por un lado, no se puede ver la imagen. Ni en el cuadro de imagen ni mediante el enlace de "Ver imagen".
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:
:
tiene que ser porque en <datos> estaba almacenado la siguiente cadena: "G::".

Prueba a imprimir el contenido de <datos> para comprobarlo.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Corregir o quitar elementos del comBoBox
« Respuesta #8 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.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Corregir o quitar elementos del comBoBox
« Respuesta #9 en: 7 Abril 2021, 22:56 pm »

Si lo hago así:
Código
  1.        void UnidadDisco()
  2.        {
  3.            // Nombre de la unidad.
  4.            ConsigueComponentes("Win32_CDROMDrive", "Id");
  5.  
  6.            // Delimitador.
  7.            string[] unidad = datos.Split(' ');
  8.            comboBox_Unidad.Items.AddRange(unidad);
  9.  
  10.            //comboBox_Unidad.Items.AddRange(unidades.Split(':'));  //el Split se puede hacer en una sola linea.
  11.  
  12.            // Selecciona la primera unidad.
  13.            comboBox_Unidad.SelectedIndex = 0;
  14.        }

Me di cuenta que en dato primero pone F:
Luego hace otra pasada en el código de abajo.
Código
  1.        void ConsigueComponentes(string hwclass, string syntax)
  2.        {
  3.            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
  4.            foreach (ManagementObject mj in mos.Get())
  5.            {
  6.                if (Convert.ToString(mj[syntax]) != "")
  7.                {
  8.                    datos = Convert.ToString(mj[syntax]);
  9.                }
  10.            }
  11.        }

Y se pone en G: borrando la F:
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Corregir velocidad de DVD (PAL) -4%
Multimedia
JimmyCool 0 2,139 Último mensaje 26 Abril 2008, 09:35 am
por JimmyCool
Consulta SQL;Listar elementos que estan presentes en TODOS los elementos de otra
Desarrollo Web
astinx 2 5,175 Último mensaje 2 Noviembre 2011, 23:06 pm
por astinx
Quitar elementos mysql
PHP
jalbtercero 5 2,803 Último mensaje 6 Marzo 2016, 17:53 pm
por #!drvy
Quitar ciertos elementos de un Array
Programación C/C++
luisito45 4 2,268 Último mensaje 28 Abril 2017, 10:06 am
por MAFUS
Añadir elementos al comboBox
.NET (C#, VB.NET, ASP)
Meta 2 3,546 Último mensaje 29 Marzo 2021, 21:25 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines