Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con checkedlistbox en visual basic.net

Estas en el tema de Problema con checkedlistbox en visual basic.net en el foro de Visual Basic clásico en Foros del Web. Hola a todos... Primero que todo felicitarlos por este foro tan excelente, hace un tiempo solucioné un problema con la consulta de un usuario de ...
  #1 (permalink)  
Antiguo 10/12/2008, 07:59
 
Fecha de Ingreso: diciembre-2008
Mensajes: 4
Antigüedad: 15 años, 4 meses
Puntos: 0
Problema con checkedlistbox en visual basic.net

Hola a todos...
Primero que todo felicitarlos por este foro tan excelente, hace un tiempo solucioné un problema con la consulta de un usuario de aca...
Segundo, he tratado de muchisimas formas de solucionar el problema que voy a explicar, he leido muchisimo en este y en otros foros, y aun no doy con la solucion..
A ver, tengo un proyecto que se llama yALB, es un editor de listas para juegos de mesa como warhammer..
El hecho es que tengo dos datagridview.. No los uso con base de datos, sino que agrego y elimino los datos manualmente..
Tengo al lado de uno de ellos, un checkedlistbox.. Bueno, con los datagridview no tengo ningun problema, ya aprendí a dominarlos perfectamente..
El programa va mas o menos asi:
Yo implemento en el programa filas para el datagridview de abajo.. Cuando se hace doble click, o se selecciona y se hace click en un botón, el programa copia la fila al datagridview de arriba y le agrega unos valores adicionales. Cuando se selecciona un elemento de el datagridview de arriba, se empieza a rellenar con unos datos que ya tengo sobre una fila, que representa a una unidad.
Para agregar los datos al datagridview de abajo, me baso en un array de una estructura que tengo,donde pone todos los datos referentes a la unidad que necesito.. Para buscarlos, tengo una funcion que a partir del indice de la fila seleccionada, encuentra el indice en el array de la unidad...
Bueno, creo que ya tanto no va al caso, pero es para que conozcan mas o menos de que va el programa..

El problema va cuando empieza lo del checkedlistbox..
En un principio, creaba con el diseñador un checkedlistbox llamado UnitMej ..
Posteriormente cuando fuese necesario, eliminaba los elementos de Unitmej, y agregaba los nuevos que necesitaba.. Por ahi no hay problema, porque me dibuja todo lo que necesito. EL problema va en que cada unidad tiene unos atributos, y unos "limites", por ejemplo, en Unitmej yo pongo para equipar a la unidad con un escudo, pero cuando selecciono otra fila y vuelvo a seleccionar la misma, me vuelve a poner como si estuviera sin escudo, pero en realidad si lo esta, y esto hace que pueda equipar a una unidad Con muchisimos escudos, cosa que no me convence..
Para ello dije, bueno, vamos a guardar el valor actual de cada item y luego lo buscamos.. Ok, pero el problema es que lo intenté y no me resulto, y ahora mismo borre esa parte del codigo...
Viendo que no obtenia resultado, dije, bueno, creemos un checkedlistbox por cada unidad en el datagridview de arriba, entonces ahi vienen mis problemas, el codigo que uso para esto es el siguiente:

Dim checkedlistnum As Integer = 0
Dim Unitmej1(100) As CheckedListBox
'Dim unitmej1 As New CheckedListBox
Function search(ByVal Nombre As String)
If checkedlistnum > 0 Then
For i As Integer = 0 To checkedlistnum
If unitmej1(i).Name = Nombre Then
Return i
Exit For
End If
Next
End If

End Function
Function addbox(ByVal unidad As atrib)
'UnitMej.Items.Clear()
'If search(unidad.Nombre & UnitList.Rows.GetFirstRow(DataGridViewElementState s.Selected)) <> -1 Then
'If checkedlistnum > 0 Then
'For i = 0 To checkedlistnum - 1
'Unitmej1(i).Visible = False
'Next
'Unitmej1(search(unidad.Nombre & UnitList.Rows.GetFirstRow(DataGridViewElementState s.Selected))).Visible = True
'End If
'Else
'Unitmej1 = System.Array.CreateInstance(GetType(CheckedListBox ), 100)
Unitmej1(checkedlistnum) = New CheckedListBox

Unitmej1(checkedlistnum).Location = New Point(15, 281)
Unitmej1(checkedlistnum).Visible = True
Unitmej1(checkedlistnum).Name = unidad.Nombre & UnitList.Rows.GetFirstRow(DataGridViewElementState s.Selected)
Unitmej1(checkedlistnum).Height = 105
Unitmej1(checkedlistnum).Width = 153
For i = 0 To (unidad.nummejoras - 1)

If i = 0 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej.Nomb re)

ElseIf i = 1 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej2.Nom bre)
ElseIf i = 2 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej3.Nom bre)
ElseIf i = 3 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej4.Nom bre)
ElseIf i = 4 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej5.Nom bre)
ElseIf i = 5 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej6.Nom bre)
ElseIf i = 6 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej7.Nom bre)
ElseIf i = 7 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej8.Nom bre)
ElseIf i = 8 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej9.Nom bre)
ElseIf i = 9 Then
Unitmej1(checkedlistnum).Items.Add(unidad.mej10.No mbre)

End If
Next
Unitmej1(checkedlistnum).Update()

checkedlistnum += 1
Return True
'End If
End Function

Lo que está comentado, es parte del codigo que tenia antes, por no decir que es casi todo..
En cuanto a que le ponga un valor fijo a los arrays, es pro ahora, xD, primero quiero ver que funcione todo y luego lo optimizo poniendole un tamaño indefinido a los arrays, porque debe ser asi...


Ah por cierto, Mi nombre es Daniel, y no es que sea muy experto en programacion, apenas estoy empezando visual basic.net y tengo algo de conocimientos de C....

Saludos y muchisimas gracias de antemano..
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 02:59.