Una ayuda para recordar los checkboxes seleccionados

Iniciado por Eleкtro, 6 Enero 2013, 04:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Al clickar sobre el botón azul que he señalado en la imagen (2011), se generan en tiempo real una lista de checkboxes y botones en el GroupBox de la derecha,
al clickar en uno de los botones generados en el groupbox, se parsea un texto delimitado y se añaden los items al listview.

Al clickar en otro botón azul limpio los controles del GroupBox (...controls.clear) y todo vuelve a empezar.

Bien, por cada botón azul, necesito recordar los checkboxes del GroupBox que estaban seleccionados, y los items del listview que estaban seleccionados.

Necesito recordarlo dentro del programa, no necesito que cada vez que se abra la aplicación se recuerden los elementos.

Creo que puedo hacer esto sin ayuda pero seguro que lo haría de la manera más complicada xD, me vendrían bien algunas sugerencias antes de empezar a hacerlo...

Mi pregunta es... ¿Como me recomiendan hacerlo?




EDITO:

No se si será la forma más correcta, pero bueno, así es como lo he hecho de momento:


Código (vbnet) [Seleccionar]

Public SelectedFolders As New List(Of String)

   Public Sub LlamadaCheckBox(ByVal sender As Object, ByVal e As System.EventArgs)
       Dim CheckboxN As CheckBox = CType(sender, CheckBox)
       If CheckboxN.Checked = True Then
           SelectedFolders.Add(ResourceTag & CheckboxN.Text)
       Else
           SelectedFolders.Remove(ResourceTag & CheckboxN.Text)
       End If
   End Sub



el sub que crea los controles:
Código (vbnet) [Seleccionar]
 Private Sub AddSubfolders(ByVal InputList As List(Of String))
       GroupBox_subcarpetas.Controls.Clear()

       Dim foldernum As Integer = 0
       Dim Array_Size As Integer = InputList.Count
       Dim chk_() As CheckBox
       Dim btn_() As Button
       ReDim chk_(Array_Size)
       ReDim btn_(Array_Size)

       For Each folder In InputList

           foldernum += 1
           chk_(foldernum) = New CheckBox
           chk_(foldernum).Name = "CheckBox" & foldernum
           chk_(foldernum).Text = folder
           chk_(foldernum).Top = 20 * foldernum
           chk_(foldernum).Tag = ResourceTag & chk_(foldernum).Text

           btn_(foldernum) = New Button
           btn_(foldernum).Name = "Button" & foldernum
           btn_(foldernum).Text = folder
           btn_(foldernum).TextAlign = ContentAlignment.TopLeft
           btn_(foldernum).Size = New Point(111, 20)
           btn_(foldernum).Top = 20 * foldernum
           btn_(foldernum).Location = New Point(20, btn_(foldernum).Top)
           btn_(foldernum).Tag = ResourceTag

           GroupBox_subcarpetas.Controls.Add(chk_(foldernum))
           GroupBox_subcarpetas.Controls.Add(btn_(foldernum))
           AddHandler chk_(foldernum).CheckedChanged, AddressOf LlamadaCheckBox
           AddHandler btn_(foldernum).Click, AddressOf LlamadaButton

           btn_(foldernum).BringToFront()

           If SelectedFolders.Contains(ResourceTag & chk_(foldernum).Text) Then chk_(foldernum).Checked = True

       Next








$Edu$

Aprendes rapido Elektro, a mi me parece bien eso que hiciste, si por lo menos te anda yo lo dejaria asi a no ser que alguien te diga que exista algun metodo para hacer esto o quien sabe.

Lo que si no se es porque los borras a los controles en vez de ocultarlos, si solo los ocultaras no necesitarias hacer todo lo que haces.

ABDERRAMAH

Yo creo que es fácil con un array multidimensional de datos booleanos, puedes hacer un foreach a la lista de checkbox para guardar en cada booleano el estado de checked. Cada grupo se guarda en una dimensión nueva y listo.