none
permitir seleccionar solo un check en listview RRS feed

  • Pregunta

  • Hola,

    Estoy cargando datos en un listview con la propiedad CheckBoxes en True para que el usuario pueda seleccionar la línea.

    El problema que tengo es que necesito que el usuario pueda seleccionar solo una línea.

    He usado la propiedad MultiSelect en False, pero el listview sigue permitiendo seleccionar varias líneas.

    Agradezco vuestro comentarios.

    Atentamente,


    Manuel Luengo Gaete

    martes, 19 de mayo de 2015 22:02

Respuestas

  • Proba con esto

      private void chklEstados_ItemCheck(object sender, ItemCheckEventArgs e)
            {
                if (e.NewValue == CheckState.Checked)
                {
                    for (int ix = 0; ix < this.chklEstados.Items.Count; ++ix)
                    {
                        if (e.Index != ix)
                        {
                            this.chklEstados.SetItemChecked(ix, false);
                        }
                    }
                }
    }

    OBS: Favor vota si te es útil la información.
    Saludos
    Bader Molinas - Paraguay
    https://deveintel.wordpress.com/

    martes, 19 de mayo de 2015 22:12
  • Hola:

     Te dejo un ejemplo:

            private ListViewItem _lastItemChecked;
    		
    		private void lstViewSubmodulos_ItemCheck(object sender, ItemCheckEventArgs e)
            {
                try
                {
                    if (_lastItemChecked != null && _lastItemChecked.Checked && _lastItemChecked != lstViewSubmodulos.Items[e.Index])
                    {
                        _lastItemChecked.Checked = false;
                    }
                    _lastItemChecked = lstViewSubmodulos.Items[e.Index];
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("Error: {0}", ex.Message), "Error inesperado", MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
                }
            }


    Saludos desde Monterrey, Nuevo León, México!!!

    miércoles, 20 de mayo de 2015 2:17

Todas las respuestas

  • Proba con esto

      private void chklEstados_ItemCheck(object sender, ItemCheckEventArgs e)
            {
                if (e.NewValue == CheckState.Checked)
                {
                    for (int ix = 0; ix < this.chklEstados.Items.Count; ++ix)
                    {
                        if (e.Index != ix)
                        {
                            this.chklEstados.SetItemChecked(ix, false);
                        }
                    }
                }
    }

    OBS: Favor vota si te es útil la información.
    Saludos
    Bader Molinas - Paraguay
    https://deveintel.wordpress.com/

    martes, 19 de mayo de 2015 22:12
  • Hola:

     Te dejo un ejemplo:

            private ListViewItem _lastItemChecked;
    		
    		private void lstViewSubmodulos_ItemCheck(object sender, ItemCheckEventArgs e)
            {
                try
                {
                    if (_lastItemChecked != null && _lastItemChecked.Checked && _lastItemChecked != lstViewSubmodulos.Items[e.Index])
                    {
                        _lastItemChecked.Checked = false;
                    }
                    _lastItemChecked = lstViewSubmodulos.Items[e.Index];
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("Error: {0}", ex.Message), "Error inesperado", MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
                }
            }


    Saludos desde Monterrey, Nuevo León, México!!!

    miércoles, 20 de mayo de 2015 2:17
  • Gracias sus soluciones me sirvieron de mucho.

    Atentamente,


    Manuel Luengo Gaete

    miércoles, 20 de mayo de 2015 15:56