Foros del Web » Programación para mayores de 30 ;) » .NET »

2 de 4 (WinForm): deshabilitar elemento de un ListBox

Estas en el tema de 2 de 4 (WinForm): deshabilitar elemento de un ListBox en el foro de .NET en Foros del Web. Continúo con las preguntas. 2 de 4: Por más que he buscado no encontrado la manera de deshabilitar un elemento de un ListBox y ponerlo ...
  #1 (permalink)  
Antiguo 20/10/2004, 12:47
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
2 de 4 (WinForm): deshabilitar elemento de un ListBox

Continúo con las preguntas.

2 de 4:

Por más que he buscado no encontrado la manera de deshabilitar un elemento de un ListBox y ponerlo más claro, de manera que no se pueda seleccionar. No quiero eliminarlo.

¿Se puede?

Un saludo y gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 20/10/2004, 16:55
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Mira:

http://www.codeproject.com/cs/combobox/colorlistbox.asp

Por otro lado puedes jugar con la opcion selectedIndexChanged y cuando sea el indice que no quieres lo deshabilites..

Ejemplo:

Cita:
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
If ListBox1.SelectedIndex = 2 Then 'o el que quieras..
ListBox1.SetSelected(2, False)
End If
End Sub
Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 20/10/2004, 17:03
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Entiendo, muy bien gracias. Entonces, la opción de deshabilitar como tal no existe.

Se trata entonces, por un lado de cambiarle el color y el estilo a cursiva por ejemplo, y por otro usar SetSelected con False.

Esto último ya lo había hecho, el problema es que ya tenía la función SelectedIndexChanged con otras operaciones.

Así que creo que lo mejor será que según vaya deshabilitando los elementos vaya cargando un vector con los índices deshabilitados. Así, cuando se active SelectedIndexChanged se recorra ese vector comprobando si el índice está deshabilitado y, en tal caso, abandonar la subrutina.

¿Te parece bien la opción?

Por cierto, gracias de nuevo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 21/10/2004, 08:51
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bueno, he estado haciendo pruebas:

El código:
Código:
    Private Sub ListBoxVisados_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxVisados.SelectedIndexChanged
        Dim i As Integer
        i = ListBoxVisados.SelectedIndex
        MsgBox(i)
        If VisDeshabilitados(i) = True Then              'Línea 854
            ListBoxVisados.SetSelected(i, False)     'Línea 855
            Exit Sub
        End If
        propiedadesVisados(i)
    End Sub
El error que me da es:

Código:
************** Texto de la excepción **************
System.IndexOutOfRangeException: Índice fuera de los límites de la matriz.
   at Qube.Form1.ListBoxVisados_SelectedIndexChanged(Object sender, EventArgs e) in C:\Documents and Settings\jls\Mis documentos\Qube\Qube\Form1.vb:line 854
   at System.Windows.Forms.ListBox.OnSelectedIndexChanged(EventArgs e)
   at System.Windows.Forms.ListBox.SetSelected(Int32 index, Boolean value)
   at Qube.Form1.ListBoxVisados_SelectedIndexChanged(Object sender, EventArgs e) in C:\Documents and Settings\jls\Mis documentos\Qube\Qube\Form1.vb:line 855
   at System.Windows.Forms.ListBox.OnSelectedIndexChanged(EventArgs e)
   at System.Windows.Forms.ListBox.WmReflectCommand(Message& m)
   at System.Windows.Forms.ListBox.WndProc(Message& m)
   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
La primera vez que selecciono el "item" no pasa nada (lógico). Luego hago las operaciones pertinenetes entre las que se encuentran:

VisDeshabilitados(i) = True
MsgBox("Visado registrado.")
MsgBox(VisDeshabilitados.IndexOf(VisDeshabilitados , True))

Después de que se ejecute el mensaje de la línea 853 aparece otro mensaje que indica -1 y que no sé de dónde sale.

¿Alguna idea?

Gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:35.