1
Aprender a programar desde cero / array de variables controles Visual Basic no visibles desde otro procedimiento
« en: 10 de Enero 2017, 17:00 »
Hola a todos:
Tengo un problema con una matriz de variables y me he quedado atascado.
Quiero desplegar una matriz de TextBox (i,j) para entrada de datos (resolución de sistemas de ecuaciones) y lo consigo, pero a la hora de leer los datos TextBox (i,j) desde otro procedimiento salen ceros.
Por supuesto salen ceros porque son variables de ámbito local al procedimiento, pero es que si las declaro al inicio como Public también son cero porque el array se dimensiona posteriormente, por lo que estoy bloqueado.
Agradecería que alguien amablemente me aporte una solución o me indique una nueva línea a seguir.
Siento si me he enrollado demasiado
Tengo un problema con una matriz de variables y me he quedado atascado.
Quiero desplegar una matriz de TextBox (i,j) para entrada de datos (resolución de sistemas de ecuaciones) y lo consigo, pero a la hora de leer los datos TextBox (i,j) desde otro procedimiento salen ceros.
Por supuesto salen ceros porque son variables de ámbito local al procedimiento, pero es que si las declaro al inicio como Public también son cero porque el array se dimensiona posteriormente, por lo que estoy bloqueado.
Agradecería que alguien amablemente me aporte una solución o me indique una nueva línea a seguir.
Siento si me he enrollado demasiado
Código: [Seleccionar]
Public Class Form2
Public ECUA As Integer
Public INCOG As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ECUA = NumericUpDown1.Value
INCOG = NumericUpDown2.Value
Dim LabelCoef(ECUA, INCOG) As Label
Dim TextBoxCoef(ECUA, INCOG) As TextBox
Dim TextBoxIndep(ECUA) As TextBox
Dim i As Integer
Dim j As Integer
For i = 1 To ECUA
For j = 1 To INCOG
If i = 1 Then 'Labels para columnas incógnitas
LabelCoef(i, j) = New Label
LabelCoef(i, j).Text = "A" & j
LabelCoef(i, j).Width = 120
LabelCoef(i, j).Height = 30
LabelCoef(i, j).Location = New Point(-60 + 126 * j, 90)
LabelCoef(i, j).Font = New Font("Calibri", 10, FontStyle.Italic)
LabelCoef(i, j).ForeColor = Color.Maroon
LabelCoef(i, j).TextAlign = ContentAlignment.MiddleCenter
Me.Controls.Add(LabelCoef(i, j))
End If
If j = 1 Then 'Labels para filas ecuaciones
LabelCoef(i, j) = New Label
LabelCoef(i, j).Text = i
LabelCoef(i, j).Width = 40
LabelCoef(i, j).Height = 30
LabelCoef(i, j).Location = New Point(10, 90 + 36 * i)
LabelCoef(i, j).Font = New Font("Calibri", 10, FontStyle.Italic)
LabelCoef(i, j).ForeColor = Color.Maroon
LabelCoef(i, j).TextAlign = ContentAlignment.MiddleCenter
Me.Controls.Add(LabelCoef(i, j))
End If
'Desplegamos la plantilla para introducir datos
TextBoxCoef(i, j) = New TextBox
TextBoxCoef(i, j).Width = 120
TextBoxCoef(i, j).Height = 30
TextBoxCoef(i, j).AutoSize = False
TextBoxCoef(i, j).TextAlign = HorizontalAlignment.Center
TextBoxCoef(i, j).BackColor = Color.LightGoldenrodYellow
TextBoxCoef(i, j).ForeColor = Color.Black
TextBoxCoef(i, j).Font = New Font("Calibri", 10, FontStyle.Regular)
TextBoxCoef(i, j).Location = New Point(-60 + 126 * j, 90 + 36 * i)
Me.Controls.Add(TextBoxCoef(i, j))
Next
'Añadimos columna para términos independientes
TextBoxIndep(i) = New TextBox
TextBoxIndep(i).Width = 120
TextBoxIndep(i).Height = 30
TextBoxIndep(i).AutoSize = False
TextBoxIndep(i).TextAlign = HorizontalAlignment.Center
TextBoxIndep(i).BackColor = Color.LightGreen
TextBoxIndep(i).ForeColor = Color.Black
TextBoxIndep(i).Font = New Font("Calibri", 10, FontStyle.Regular)
TextBoxIndep(i).Location = New Point(66 + 126 * INCOG, 90 + 36 * i)
Me.Controls.Add(TextBoxIndep(i))
Next
End Sub
End Class