Principales respuestas
Evitar que se introduzcan duplicados en un listview

Pregunta
-
Respuestas
-
Hola Sully, si te sirve puedes utilizar FindItemWithText para comparar los items declarando Listviewitem y comparando con el ListView1 ej
private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i <= 100; i++) { DateTime Dte = DateTime.Now ; string b = Dte.ToString("yyyyMMddHHmmssff"); ListViewItem ItemLv = listView1.FindItemWithText(b); if (ItemLv != null) { } else { listView1.Items.Add(b); } }
Si no hay conicidencia la busqueda arroja null y entonces carga el nuevo Item. como ejemplo coloco una imagen donde con este mismo código se carga también un listbox todos los items, para comparar la diferencia
ListView filtra resultados y ListBox carga todos los items
Saludos
- Editado Marcelo PF viernes, 20 de octubre de 2017 0:07
- Propuesto como respuesta Juan MondragónModerator viernes, 20 de octubre de 2017 19:16
- Marcado como respuesta Juan MondragónModerator jueves, 26 de octubre de 2017 19:13
Todas las respuestas
-
Sully, esto lo debes hacer desde los datos. Evita allí los duplicados, pues el listview es sólo un visor.
Necesitamos mas detalles para poder ayudarte.
Saludos
Christian Amado
Software Engineer | Microsoft MVP: Windows Development & Dynamics AX
Don't forget to mark the right answer and vote up if helps you.
My Blog -
ok mira, lo elementos que introduzco en ese list en desde un textbox y son códigos de barras que introduzco con una pistola, ahora, esto pasa en el evento keypres cuando se da un enter, porque de esa forma trabaja la pistola, entonces checo el codigo extraigo info de el y cuando el codigo esta registrado lo manda al listview
este es el evento keypres
private void txt_codbar_entradas_KeyPress(object sender, KeyPressEventArgs e) { try { validando.solonumeros(e); if ((int)e.KeyChar == (int)Keys.Enter) { int id = int.Parse(txt_codbar_entradas.Text); int validar = validarEntrada(id); if (validar > 0) { e.Handled = true; MessageBox.Show("Este articulo ya tiene una ENTRADA registrada", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); txt_codbar_entradas.Clear(); } else { e.Handled = true; infoLabelsEntradas(); txt_codbar_entradas.Clear(); lbl_entradas_cantidad.Text = (list_entradas.Items.Count).ToString(); } } } catch { } }
aqui uso el codigo de barras para obtener la info, si es que este esta registrado ya
public void infoLabelsEntradas() { try { consultas verinfo = new consultas(); articulo arti = new articulo(); DataTable dt = new DataTable(); arti.codbar = int.Parse(txt_codbar_entradas.Text); dt = verinfo.info(arti); if (dt.Rows.Count > 0) { lbl_entrada_articulo.Text = dt.Rows[0]["nombre_articulo"].ToString(); lbl_entrada_modelo.Text = dt.Rows[0]["modelo_articulo"].ToString(); lbl_entrada_tamaño.Text = dt.Rows[0]["tamaño_articulo"].ToString(); lbl_entrada_color.Text = dt.Rows[0]["color_articulo"].ToString(); lbl_entrada_lote.Text = dt.Rows[0]["lote_articulo"].ToString(); list_entradas.Items.Add(arti.codbar.ToString()); //AQUI AÑADO EL CODIGO EL LISTVIEW } else { lbl_entrada_articulo.Text = "n/a"; lbl_entrada_modelo.Text = "n/a"; lbl_entrada_tamaño.Text = "n/a"; lbl_entrada_color.Text = "n/a"; lbl_entrada_lote.Text = "n/a"; } } catch { txt_codbar_entradas.Clear(); } }
yo e querido hacer la validacion en el evento keypress pero mis intentos no han funcionado!!!
como le puedo hacer???
-
Hola Sully, si te sirve puedes utilizar FindItemWithText para comparar los items declarando Listviewitem y comparando con el ListView1 ej
private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i <= 100; i++) { DateTime Dte = DateTime.Now ; string b = Dte.ToString("yyyyMMddHHmmssff"); ListViewItem ItemLv = listView1.FindItemWithText(b); if (ItemLv != null) { } else { listView1.Items.Add(b); } }
Si no hay conicidencia la busqueda arroja null y entonces carga el nuevo Item. como ejemplo coloco una imagen donde con este mismo código se carga también un listbox todos los items, para comparar la diferencia
ListView filtra resultados y ListBox carga todos los items
Saludos
- Editado Marcelo PF viernes, 20 de octubre de 2017 0:07
- Propuesto como respuesta Juan MondragónModerator viernes, 20 de octubre de 2017 19:16
- Marcado como respuesta Juan MondragónModerator jueves, 26 de octubre de 2017 19:13