none
Alcance de las variables RRS feed

  • Pregunta

  • Tengo dudas acerca de como declarar variables en Visual NET. Estoy diseñando un formulario donde se tienen que cambiar el valor de una variable. Declaro la variable a nivel formulario:

     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim señal As Integer = 0
    End Sub

    Luego en el control textbox intento utilizo la variable 


     Private Sub importe_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles importe.KeyPress

     If señal = 0 Then ( aca me muestra el error "EL OPERADOR "=" NO ESTA DEFINIDO PARA LOS TIPOS 'SYSTEM.WINDOWS.FORMS.TEXTBOX Y INTEGER)
             señal = 1 ( Un valor de tipo integer no se puede convertir en SYSTEM.WINDOWS.FORMS.TEXTBOX)
      End If


    También intente agregar un módulo al proyecto, como hacia en visual basic, pero tampoco funciona. No encontre bibliografía donde aclarar dudas. Gracias

    miércoles, 1 de abril de 2020 2:05

Respuestas

  • Excelente! Clarisimo. Si podes orientarme acerca de algun libro o bibliografia de BV.NET te agradecería, yo utilizaba Visual Basic y cambia un poco. Me interesaría ver desde cero el lenguaje, porque muchas veces te perdes de buen contenido buscando solo lo que necesitas en un momento. Muchas gracias por responder. saludos!
    • Marcado como respuesta gssosa jueves, 2 de abril de 2020 12:54
    jueves, 2 de abril de 2020 12:54

Todas las respuestas

  • Declaro la variable a nivel formulario:

    No, ese código que muestras NO declara la variable a nivel formulario. La declara dentro de un método que está dentro del formulario. Cuando la declaras dentro de un método, el alcance es solo ese método, no se puede ver desde ningún otro método. El hecho de que ese método resulte ser el Load del formulario es completamente irrelevante a efectos de alcance de las variables.

    Para declararla a nivel de formulario, sácala del método y pon la declaración dentro de la clase.

    Public Class MiFormulario
        Inherits Form
    
        Private señal As Integer
    
        'Aquí tus métodos
    
    End Class
    También intente agregar un módulo al proyecto, como hacia en visual basic, pero tampoco funciona

    Un módulo en VB.NET se compila igual que si hubieras declarado una clase estática. Funciona, pero tienes que llamarlo anteponiendo el nombre de la clase al nombre de la variable. Pero ojo, eso te da un alcance global a todo el proyecto; no sería un alcance a nivel de formulario.

    miércoles, 1 de abril de 2020 2:41
  • Hola

    Para declarar variables, debes de saber que hay 3 formas de hacerlo (quizá más) pero te indico cuales son y las 3 que uso:

    Variables a nivel método o proceso

    Esta variable la declaras para trabajar dentro de un método y solo ahí es donde tendrás acceso a la variable, mas no podrás usar o llamarla desde otro lugar o proceso.

    La siguiente variable Var_Metodo la declare dentro del LOAD del formulario y solo ahi podré usarla

    Variables a nivel de formulario

    Esta variable la declaras para trabajar dentro de todo un formulario y puedes hacer uso dentro de cualquier método que este en este formulario.

    La variable Var_Formulario la declaro al inicio, antes de cualquier método, incluso antes del LOAD del formulario y la usaré si necesito desde cualquier método que esté dentro del formulario.

    Variables a nivel de proyecto

    Esta variable la declaras para hacer uso desde cualquier método, también desde cualquier formulario, incluso desde módulos y clases que se creen en el proyecto.

    La variable Var_Proyecto la he declarado dentro de un módulo llamado MODVARIABLES, y para que sea accesible desde cualquier lugar del proyecto, la declaración cambia de DIM por PUBLIC

    Ojala te sirva la orientación

    Saludos

    miércoles, 1 de abril de 2020 14:57
  • Excelente! Clarisimo. Si podes orientarme acerca de algun libro o bibliografia de BV.NET te agradecería, yo utilizaba Visual Basic y cambia un poco. Me interesaría ver desde cero el lenguaje, porque muchas veces te perdes de buen contenido buscando solo lo que necesitas en un momento. Muchas gracias por responder. saludos!
    • Marcado como respuesta gssosa jueves, 2 de abril de 2020 12:54
    jueves, 2 de abril de 2020 12:54