Foros del Web » Programación para mayores de 30 ;) » .NET »

Variable GLOBAL

Estas en el tema de Variable GLOBAL en el foro de .NET en Foros del Web. Buenas Amigos del foro, Tengo un forms de login para acceder al programa, lo que quiero es que el nombre de usuario aparezca luego en ...
  #1 (permalink)  
Antiguo 07/09/2012, 09:32
 
Fecha de Ingreso: junio-2012
Ubicación: Caracas-Venezuela
Mensajes: 114
Antigüedad: 11 años, 10 meses
Puntos: 0
Exclamación Variable GLOBAL

Buenas Amigos del foro,

Tengo un forms de login para acceder al programa, lo que quiero es que el nombre de usuario aparezca luego en los otros forms pero en un label.. Un tipico texto de cerrar sesion ejm:nombre_usuario (salir) .. Esto que les menciono lo hago con una clase publica..

Código vb:
Ver original
  1. Public Class USUARIO
  2.  
  3.     Public Shared Miusuario As String = frmINICIO.txtusuario.Text.ToString
  4. End Class

luego en el load de los otros forms coloco esto :

Código vb:
Ver original
  1. lblcerrarsesion.Text = USUARIO.Miusuario + "(cerrar sesion)"

Y de esta manera es que me traigo el nombre de usuario coolocado para que me aparezcan en los labels de los otros forms .. el problema es que cuando le doy a salir de la sesion para ingresar con otro usuario la variable se mantiene.. me explico?.. Ejm: El primer ususario con el que ingrese es "Pedro10" luego que le doy al label "salir" o"cerrar sesion" para ingresar conn un nuevo ussuario "Pablo5" .. en los labels me sigue apareciendo el nombre del primer usuario "Pedro10"..

La unica manera de que no suceda esato es que me salga del programa en su totalidad y lo vuelva a ejecuta ..

SE que a lo mejor no es la manera mas practica de hacer ese procedimiento pero fue la unica que encontre por la web..( o por lo mnos la unica que pude entender con claaridad)

Espero puedan ayudarm.. gracias de antemano.. SALUDOS..

PD:trabajo con windows forms.. BD mysql.
__________________
David`Novato
  #2 (permalink)  
Antiguo 07/09/2012, 14:59
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Variable GLOBAL

Buenas,

Si pones shared en un atributo de una clase significa que ese atributo es un atributo de la clase, no del objeto, es decir, que existe aunque no haya ningún objeto de la clase Usuario y que comparte el valor para todos los objetos de esa clase.

Por eso será que te sigue apareciendo el primer usuario que entró.

Lo que tienes que hacer es que ese atributo sea del objeto (quitarle el Shared) y, además, crear un objeto de la clase Usuario y pasar la referencia de este objeto a los formularios que te interesen.

Un saludo.
  #3 (permalink)  
Antiguo 10/09/2012, 09:54
 
Fecha de Ingreso: junio-2012
Ubicación: Caracas-Venezuela
Mensajes: 114
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Variable GLOBAL

Oye la verdad aun sigo sin poner lograrlo .. :S hasta lo intente con un modulo y es el mismo problema ...
__________________
David`Novato
  #4 (permalink)  
Antiguo 10/09/2012, 13:11
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Variable GLOBAL

Buenas,

No lo has especificado, pero supongo que el programa es de Windows Forms y es monousuario (es decir, que sólo puede conectarse un usuario a la vez).

Olvida lo que te he contado anteriormente. Lo que te debe estar pasando es que no estás reasignando el nuevo usuario al realizar el login a la aplicación, puesto que estás realizando la asignación directamente en el atributo y, por lo tanto, se está asignando el valor sólo la primera vez.

No entiendo muy bien como tienes estructurada la parte del formulario de login, porque veo cosas un poco raras como, por ejemplo, que estás usando una referencia al formulario de login (frmINICIO) en la clase USUARIO sin estar definida en ningún sitio. Por eso, vendría muy bien que pusieses un poco más del código para podernos hacer una idea más aproximada para poder arreglarlo.

Un saludo.
  #5 (permalink)  
Antiguo 10/09/2012, 15:06
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Variable GLOBAL

Hola DavidNovato, te dejo la clase en c# para que dentro puedas tu session, modificarlas en ejecución y puedas acceder desde cualquier parte de tu aplicación :

Código C:
Ver original
  1. public class MiSession
  2.     {
  3.  
  4.         private static MiSession datos;
  5.         private MiSession() { }
  6.  
  7.         public static MiSession Instance()
  8.         {
  9.             if (datos == null)
  10.             {
  11.                 datos = new MiSession();
  12.             }
  13.  
  14.             return datos;
  15.         }
  16.  
  17.         //Esta variable es la que contendrá almacenado la variable
  18.         public string session { get; set; }
  19.  
  20.     }

En tu Login para que le grabes el usuario sería :
Código C:
Ver original
  1. MiSession.Instance().session= "La Session";

Y para recuperarlo :
Código C:
Ver original
  1. string ejemplo = MiSession.Instance().session;
Espero puedas convertirlo a vb.net. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: global, mysql, windows, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:48.