Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 9 Marzo 2013, 20:40 pm



Título: [SOLUCIONADO] Problema con variables dinámicas...
Publicado por: Eleкtro en 9 Marzo 2013, 20:40 pm
Tengo una serie de controles llamados:
Código:
"Button_1"
"Button_2"
"Button_3"

Tengo una serie de variables llamadas:
Código:
    Dim Button_1_Location_Y As Integer = 3
    Dim Button_2_Location_Y As Integer = 32
    Dim Button_3_Location_Y As Integer = 61

Y ahora necesito usar las variables en este FOR:
Código
  1.        For Each Control In Panela.Controls
  2.            If Control.GetType.ToString.Contains("Button") Then
  3.                Dim Botoncito As Button = CType(Control, Button)
  4.                If Not Botoncito.Name = "Button_" & Selected_TAB Then
  5.  
  6.                    ' Aquí el problema que no sé resolver:
  7.                    Botoncito.Location = New Point(Botoncito.Location.X, (Botoncito.name & "_Location_Y")) ' String: Button_1_Location_Y
  8.  
  9.  
  10.                End If
  11.            End If
  12.        Next

Lo que necesito es convertir este string para usar la variable que se llama exáctamente igual:
Código:
(Botoncito.Name & "_Location_Y") ' String: Button_1_Location_Y 

¿Alguna ayuda?

Saludos!


Título: Re: Problema con variables dinámicas...
Publicado por: Novlucker en 9 Marzo 2013, 23:50 pm
Sin pensarlo mucho, por que no usas un diccionario para guardar las variables? :P

Saludos


Título: Re: Problema con variables dinámicas...
Publicado por: Eleкtro en 10 Marzo 2013, 07:02 am
Gracias NovLucker, pero eso de los diccionarios es algo nuevo para mi.

¿Tu crees que se podría solucionar con eso?

Acabo de informarme y ver varios ejemplos de uso de las colecciones de Diccionarios (http://www.dotnetperls.com/dictionary-vbnet) pero no le encuentro el punto... es decir, parece ser que es una simple colección a la que se puede añadir valores de cualquier tipo, Pero creo me quedo en las misma situación, ¿como lo uso para mi propósito?.

un saludo!


Título: Re: Problema con variables dinámicas...
Publicado por: Novlucker en 10 Marzo 2013, 14:26 pm
Porque sí como key del diccionario colocas el nombre de la variable, luego accedes al valor por ese nombre


Título: Re: Problema con variables dinámicas...
Publicado por: Eleкtro en 12 Abril 2013, 21:06 pm
Porque sí como key del diccionario colocas el nombre de la variable, luego accedes al valor por ese nombre

No entendí nada de eso cuando te leí por primera vez, sincéramente ni sabía como usar el dictionary para mi propósito a pesar de ver el ejemplo del MSDN, ni tampoco me ibas a ofrecer un ejemplo de uso por más que insistiese xD, así que dejé el tema en blanco.

Ahora ya he aprendido a usar los diccionarios y los hastables porque he podido ver un buen ejemplo para las variables, y era mucho más sencillo de lo que me imaginé xD

Dictionary rules!

Gracias Nov.



EDITO:

Aquí dejo un ejemplo de uso:
Código
  1.        Dim MyDictionary As New Dictionary(Of String, Boolean)
  2.  
  3.        MyDictionary.Add("A", True)
  4.        MyDictionary.Add("B", False)
  5.        MyDictionary.Add("C", Nothing)
  6.  
  7.        ' Set value
  8.        MyDictionary.Item("C") = True
  9.  
  10.        ' Get Value
  11.        MsgBox(MyDictionary.Item("C"))

Y aquí el uso que le he dado:
Código
  1.    Dim CheckBoxes_Dictionary As New Dictionary(Of String, Boolean)
  2.  
  3.    Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.        CheckBox_A.Tag = "A"
  5.        CheckBox_B.Tag = "B"
  6.        CheckBox_C.Tag = "C"
  7.  
  8.        CheckBoxes_Dictionary.Add("A_Enabled", Nothing)
  9.        CheckBoxes_Dictionary.Add("B_Enabled", Nothing)
  10.        CheckBoxes_Dictionary.Add("C_Enabled", Nothing)
  11.    End Sub
  12.  
  13.    Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles _
  14.        CheckBox_A.CheckedChanged, _
  15.        CheckBox_B.CheckedChanged, _
  16.        CheckBox_C.CheckedChanged
  17.  
  18.        CheckBoxes_Dictionary.Item(sender.tag & "_Enabled") = sender.Checked
  19.  
  20.    End Sub