Visual Basic.NET - Una Clase que regrese múltiples valores

 
Vista:
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 14/05/2015 01:23:36
Buenas tardes estimados:

Tengo una consulta y quiero saber si alguno me puede ayudar,

Necesito hacer una clase que me devuelva valores para varios textbox, combos, etc.

Por ejemplo:

Que en la clase yo pueda poner algo así:

Function RegresaValores()

Campo1.Text=""
Campo2.SelectedItem="Algo"
Campo3.Text="0"

End Function

Esto porque necesito sacar el código de un programa porque se me está haciendo muy largo e incómodo de manejar o visualizar.

Soy nuevo en esto y no he encontrado algún ejemplo que me ayude.

Saludos de antemano.
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por Miguel (476 intervenciones) el 14/05/2015 02:31:03
Hola,
¿Necesitas obtener un solo tipo de datos con la función?

Creo que puedes usar algo como ésto:

1
2
3
friend function obtenerAlgo() as string()
   return {"algo", "algo", "algo"}
end function


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier Valverde (22 intervenciones) el 14/05/2015 02:37:12
Gracias, y cómo se usaría?
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por Miguel (476 intervenciones) el 14/05/2015 02:40:08
Algo como:

1
2
3
4
dim datosObtenidos as string() = obtenerAlgo()
txtAlgo.text=datosObtenidos(0).toString
txtOtro.text=datosObtenidos(1).toString
lblAlgo.text=datosObtenidos(2).toString
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier Valverde (22 intervenciones) el 14/05/2015 02:48:15
Gracias, mañana lo pruebo. Un saludo cordial
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
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 14/05/2015 16:05:08
Miguel, la función está muy buena, solo que me pasaría lo mismo que mi problema original, siempre habrá mucho código en mi programa principal y yo ocupo disminuir el mismo para que sea manejable pues se volvió muy grande.

No se si estoy preguntando bien, pero necesito una clase o algo donde yo pueda definir valores de un form, por ejemplo, limpiar todas las variables o asignarles algún valor ahí. Pero que esté fuera de ese form para que sea manejable.

Saludos y gracias de antemano.
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por Miguel (476 intervenciones) el 14/05/2015 16:39:09
Hola,
Muy bien, ¿me puedes comentar qué deseas hacer exactamente?

Saludos,
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
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 14/05/2015 16:59:57
Por ejemplo, tengo el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Private Sub Navegar()
        T1.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(1)
        T2.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(2)
        T3.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(3)
        T4.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(4)
        T5.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(5)
        T6.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(6)
        T7.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(7)
        T8.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(8)
        T9.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(9)
        T10.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(10)
        T11.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(11)
        T12.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(12)
        T13.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(13)
        T14.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(14)
        T15.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(15)
        T16.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(16)
        C1.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(17)
        C2.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(18)
        'página 2
        If ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(19) = "Sí" Then
            Chk1.Checked = True
        Else
            Chk1.Checked = False
        End If
        C3.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(20)
        C4.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(21)
        T17.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(22)
        C5.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(23)
        C6.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(24)
        T18.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(25)
        If ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(26) = "Sí" Then
            Chk2.Checked = True
        Else
            Chk2.Checked = False
        End If
        C7.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(27)
        C8.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(28)
        T19.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(29)
        T20.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(30)
        T21.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(31)
        T22.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(32)
        T23.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(33)
        T24.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(34)
        'pagina 3
 
        Me.LblRegistro.Text = "" & indec + 1 & " de " & Me.ds.Tables("SC_DetalleSolicitudCotizacion").Rows.Count
    End Sub

Pero todavía me falta agregarle programación, y me gustaría que ese código por ejemplo, estuviera en una clase o algo donde yo solo maneje esa porción y acá por ejemplo solo ejecutar algo como esto:

1
2
3
Private Sub Navegar()
     Navegue() <<<<<Esto que lo jale de esa clase o algo donde yo solo maneje esa parte.
End Sub

Gracias Miguel!!!
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por Miguel (476 intervenciones) el 14/05/2015 17:38:12
Hola, quedaría algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Friend Sub Navegar(T1 As TextBox, T2 As TextBox, T3 As TextBox, T4 As TextBox, T5 As TextBox, T6 As TextBox, T7 As TextBox, T8 As TextBox, _
                        T9 As TextBox, T10 As TextBox, T11 As TextBox, T12 As TextBox, T13 As TextBox, T14 As TextBox, T15 As TextBox, T16 As TextBox, _
                        T17 As TextBox, T18 As TextBox, T19 As TextBox, T20 As TextBox, T21 As TextBox, T22 As TextBox, T23 As TextBox, T24 As TextBox, _
                        ds As DataSet, indec As Integer, C1 As ComboBox, C2 As ComboBox, C3 As ComboBox, C4 As ComboBox, C5 As ComboBox, C6 As ComboBox, _
                        C7 As ComboBox, C8 As ComboBox, chk1 As CheckBox, chk2 As CheckBox, LblRegistro As Label)
 
 
        T1.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(1)
        T2.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(2)
        T3.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(3)
        T4.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(4)
        T5.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(5)
        T6.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(6)
        T7.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(7)
        T8.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(8)
        T9.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(9)
        T10.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(10)
        T11.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(11)
        T12.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(12)
        T13.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(13)
        T14.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(14)
        T15.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(15)
        T16.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(16)
        C1.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(17)
        C2.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(18)
        'página 2
        If ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(19) = "Sí" Then
            chk1.Checked = True
        Else
            chk1.Checked = False
        End If
        C3.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(20)
        C4.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(21)
        T17.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(22)
        C5.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(23)
        C6.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(24)
        T18.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(25)
        If ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(26) = "Sí" Then
            chk2.Checked = True
        Else
            chk2.Checked = False
        End If
        C7.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(27)
        C8.SelectedItem = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(28)
        T19.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(29)
        T20.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(30)
        T21.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(31)
        T22.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(32)
        T23.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(33)
        T24.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(34)
        'pagina 3
 
        LblRegistro.Text = "" & indec + 1 & " de " & ds.Tables("SC_DetalleSolicitudCotizacion").Rows.Count
 
    End Sub


Uso:

1
tuClaseOModuloEtc.Navegar(parametros...)



Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 14/05/2015 23:04:41
Miguel, excelente, solo una pregunta, a la hora de crear la clase me dice que ds e indec no están declarados.

Aún así funcionaría?

Saludos y mil gracias por tu paciencia y ayuda!
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
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 15/05/2015 00:00:14
Ya vi que se pasan como parámetros, no hagas caso del anterior.

Lo hice de esta forma, para probar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
********La función
Public Shared Function Navegar(T1 As TextBox, T2 As TextBox, T3 As TextBox, ds As DataSet, indec As Integer, LblRegistro As Label)
 
        T1.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(1)
        T2.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(2)
        T3.Text = ds.Tables("SC_DetalleSolicitudCotizacion").Rows(indec).Item(3)
 
 
        LblRegistro.Text = "" & indec + 1 & " de " & ds.Tables("SC_DetalleSolicitudCotizacion").Rows.Count
    End Function
 
*****La ejecución
 Private Sub btnPrimero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrimero.Click
        If indec <> 0 Then
            indec = 0
            Funciones.Navegar(T1.Text, T2.Text, T3.Text, ds, indec, LblRegistro) <<<<Acá me da error de que no se puede convertir un valor string a us system textbox
        Else
            MsgBox("Este es el primer registro", MsgBoxStyle.OkOnly)
        End If
    End Sub
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por Miguel (476 intervenciones) el 15/05/2015 00:33:36
Hola, quitale el ".Text" a todos los parámetros...


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 15/05/2015 00:45:41
Esa era...muchísimas gracias Miguel, muy amable de tu parte.

Saludos!!!!
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por Miguel (476 intervenciones) el 15/05/2015 01:00:01
Un gusto.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 23/05/2015 01:01:31
Hola nuevamente Miguel:

Te comento que he utilizado la función con la que me ayudaste, pero al mandarle el Dataset a la misma, me está generando más registros, por ejemplo, le mando la primer vez a la función y me genera bien el segundo, pero a partir de ahí se empieza a duplicar, hay alguna forma de decirle que limpie los datos del Dataset antes de enviarlos a la función?

No se si me explico, pero creo que debes entender bien a lo que me refiero.

Saludos y gracias por tu ayuda.
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
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Una Clase que regrese múltiples valores

Publicado por giancarlo (488 intervenciones) el 15/05/2015 17:39:58
Algo que tambien puede ayudarte es el uso de clases, agregas una clase con el nombre entidad, luegos, iria algo asi:

1
2
3
4
5
public class entidad
property nombre as string
property indice as integer
property fecha as date
end class

Ahora esta entidad, puedes usarlo como un tipo de dato, pero hagamos una prueba, para declarar uno nuevo:
1
2
3
4
dim nuevo as new entidad
nuevo.nombre="nombre de algo"
nuevo.indice=1525
nuevo..fecha=date.now

puedes usarlo como una funcion:
1
2
3
4
5
6
7
8
function obteneralgo(parametros) as entidad
'aqui estableces los valores 
dim nuevo as new entidad
nuevo.nombre="nombre de algo"
nuevo.indice=1525
nuevo..fecha=date.now
return nuevo
end function

para obtener resultado, simplemente accedes a lo que declaraste:
1
2
3
dim resultado as entidad=obteneralgo(parametros)
txtnombre.text=resultado .nombre
txtindice.text=resultado .indice
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Una Clase que regrese múltiples valores

Publicado por Javier (22 intervenciones) el 15/05/2015 22:04:40
Muy amable de tu parte Giancarlo, lo trataré de poner en práctica también.

Saludos cordiales!!!
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