Visual Basic.NET - BackColor a varios Botones

   
Vista:

BackColor a varios Botones

Publicado por Chicho (2 intervenciones) el 21/10/2010 01:06:16
Hola! Soy Chicho, y estoy tonteando con el Visual Studio 2010, (VB.net)

Mi nivel en programación es del 11%. Y mi problema es tan fácil de resolver que no funciona...

Me explico: Tengo un Panel con 169 botones, (13x13) mi intención es colorear X botones dependiendo del valor de un Slider (o trackbar).
Si pongo el siguiente codigo:
if trackbar.value = 1 then Boton1.backcolor = color.blue
if tracbar.value = 2 then Boton1.backcolor = color.blue and Boton2.backcolor = color.blue
.....

eso me funciona, pero como es un trabajo de chinos, ya que tengo que hacer muchas combinaciones, he intentado hacer de todo para simplificar.. por ejemplo.

Private Sub FilaA-1 ()
Boton1.Backcolor = color.blue
End Sub

Private Sub FilaA-2 ()
Boton1.backcolor = color.blue
Boton2.backcolor = color.blue
End Sub
.....
Private Sub FilaB-1 ()
Boton14.backcolor = color.blue
End Sub
......
Pero esto no me funciona, colorea los botones que le apetece...

en el trackbar pongo:
Clear_Panel () <-' esto me resetea los backcolor
If trackbar.value = 1 then
FilaA-4 ()
FilaB-2 ()
....
End If

He intentado hacer una Coleccion de controles pero no sé como aplicarle el backcolor a la coleccion. He intentado hacer el primer ejemplo de esta web, pero no he sido capaz, ya que no pude adaptarlo a mi codigo ya que no tengo ni idea de como adaptarlo...

http://msdn.microsoft.com/es-es/library/ms172860.aspx

Bueno.. ahí queda la chapa...

Saludos!

PD: los arrays de controles tampoco los domino.. creo q lo optimo sería una colección de botones, pero no he sido capaz de aplicarle el color a los elementos de la coleccion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BackColor a varios Botones

Publicado por Damian (824 intervenciones) el 22/10/2010 15:22:34
No hay duda de que debes hacer una coleccion de controles, en este caso de tipo Button.
Para que te orientes ería algo asi:

Dim i as integer
i=1
While i<=169
Dim btn As New Button
btn.Size = New Size(13, 13)

Select Case i
Case 1 To 15
btn.BackColor = Color.Aqua
btn.Name = "btn"
btn.Location = New Point(188, 59)
Me.Controls.Add(btn)
Case 16 To 30
btn.BackColor = Color.Blue
btn.Name = "btn"
btn.Location = New Point(188, 89)
Me.Controls.Add(btn)
.
.
.
End Select
i += 1
AddHandler btn.Click, AddressOf Btn_Click
End While

La idea con el Select case es agarrar un grupo de botones y ponerles el mismo color, con la propiedad Location ubicas los controles según las dimensiones de tu formulario o contenedor y luego lo agregas al form con Me.Controles.add(btn).
Con AddHandler creas eventos para el control.
Bueno espero se entienda la idea, sino vas a tener que buscar un tutorial referido a las colecciones de controles.
Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:BackColor a varios Botones

Publicado por ChichoSpit (2 intervenciones) el 28/10/2010 15:15:20
Hola Damian,
He conseguido hacer una Coleccion de controles, y asignarle el backcolor a todos los botones del panel.
Lo he echo de otra forma:

He creado una variable
ButtonsPanel es la Coleccion de controles.

Dim ColorCollection As Button

For Each ColorCollection In ButtonsPanel
ColorCollection.BackColor = Color.DarkOrange
Next

Ahora que sé crear colecciones y aplicarle atributos, me ayudará bastante más adelante.

pero sigo teniendo el mismo problema.. colorea los botones que quiere... es raro.. es como si no diese tiempo al programa a incluir los botones de la colección en la Collection.

le digo "value de trackbar = 1 entonces añade a la coleccion x.buton, y.buton..etc.. si trackbar = 2 entonces añade estos otros... "

habrá que ponerle un tiempo de espera entre añadir un botón y otro botón?

algo tengo q estar haciendo mal? o simplemente windows sucks..? tampoco es que tenga mucha idea de programación.. pero bueno..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar