C sharp - Compartir una List entre dos formularios Windows Form C#

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 11 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Emanuel (4 intervenciones) el 23/06/2019 16:28:27
]Saludos. tengo un problema y es que estoy haciendo un programa con windows form (un login de registro y verificacion)en diferentes formularios Mi problema es que no puedo pasar mi list de Usuarios de un formulario a otro, puedo registrar pero no verificar , Es decir mi Que en un formulario estoy registrando a mis usuarios y en el otro verifico su existencia pero no puedo acceder a la list del otro.Gracias

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
56
57
58
59
60
61
62
63
64
65
66
//form del login donde registro  usuarios
 
namespace Inicio
{
    public partial class Login : Form
    {
        List<Usuario> lista = new List<Usuario>();
        public Login()
        {
            InitializeComponent();
        }
 
 
        public static byte[] GetHash(string imputString)
        {
            HashAlgorithm algoritm = SHA256.Create();
            return algoritm.ComputeHash(Encoding.UTF8.GetBytes(imputString));
        }
        public static string getHashString(string inputString)
        {
            StringBuilder sb = new StringBuilder();
            foreach (byte b in GetHash(inputString))
                sb.Append(b.ToString("X2"));
            return sb.ToString();
 
 
        }
        private void IngresarDatos()
        {
            Usuario usuario = new Usuario();
            usuario.login = txtUsuario.Text;
            usuario.clave = getHashString(txtClave.Text.Trim());
            lista.Add(usuario);
            limpiar();
        }
        private void limpiar()
        {
            txtUsuario.Text = string.Empty;
            txtClave.Text = string.Empty;
            txtUsuario.Focus();
        }
        public bool autenticar()
        {
            foreach (var item in lista)
            {
                if (item.login == txtUsuario.Text.Trim() && item.clave == getHashString(txtClave.Text.Trim()))
                {
                    return true;
                }
            }
            return false;
 
        }
        private bool autenticar1()
        {
            var dato = lista.AsParallel().Where(x => x.login == txtUsuario.Text.Trim() && x.clave == getHashString(txtClave.Text.Trim())).FirstOrDefault();
            if (dato != null) return true;
            else return false;
        }
 
        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            IngresarDatos();
        }
    }
}


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
//form donde deberia verificar la existencia de dichos usuarios son tres formulario en total ...un inicio --verificar y login
 
namespace Inicio
{
 
    public partial class Verificar : Form
    {
 
 
 
        public Verificar()
        {
            InitializeComponent();
        }
        public static byte[] GetHash(string imputString)
        {
            HashAlgorithm algoritm = SHA256.Create();
            return algoritm.ComputeHash(Encoding.UTF8.GetBytes(imputString));
        }
        public static string getHashString(string inputString)
        {
            StringBuilder sb = new StringBuilder();
            foreach (byte b in GetHash(inputString))
                sb.Append(b.ToString("X2"));
            return sb.ToString();
 
 
        }
 
        public bool autenticar()
        {
            foreach (var item in lista)
            {
                if (item.login == txtVUsuario.Text.Trim() && item.clave == getHashString(txtVClave.Text.Trim()))
                {
                    return true;
                }
            }
            return false;
 
        }
        private void btnVerificar_Click(object sender, EventArgs e)
        {
            if (autenticar())
            {
                MessageBox.Show("AUTENTICADO");
            }
            else MessageBox.Show("INGRESO NO AUTORIZADO");
        }
    }
 
}
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: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Yamil (1164 intervenciones) el 23/06/2019 17:13:13
Puedes pasarla como parametro cuando instancies Verificar.
1= Crea un metodo en Login que te retorne la lista

1
2
3
4
public List<Usuario> GetListusuario()
{
 return lista;
}

2. Agrega en el constructorde Verificar el parametro que vas a enviar

1
2
3
4
5
6
7
8
9
private readonly List<Usuario> _usuarioList;
 
public verificar(List<Usuario> usuarioList)
{
    InitializeComponent();
  _usuarioList = usuarioList;
}
 
...

3= Lo pasas como parametro cuando instancies Verificar
1
2
3
List<Usuario> usuarioList = login.GetListusuario() ;
verificar = new Verificar(usuarioList)
...
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 Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 24/06/2019 22:16:47
Verificar, significa que debes saber si está registrado en tu base de datos?.

Eso es sencillo, ya que tendrías que consultar si existen, al pasarle el usuario y password, si te devolverá un valor de retorno, si es diferente de nulo, es que existe, no se porque te complicas tanto la vida?.

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
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Yamil Bracho (1164 intervenciones) el 24/06/2019 22:19:11
Ahi me referia al formualrio que creo que le coloco como nombre 'Verificar'...
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 Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 24/06/2019 22:23:30
Es que para verificar si un usuario está registrado o no, no se necesita cargar toda la tabla de usuarios con todos los usuarios, suficiente con buscar uno en específico, de otra manera la seguridad estaría comprometida.

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
sin imagen de perfil
Val: 6
Ha aumentado su posición en 11 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Emanuel (4 intervenciones) el 25/06/2019 03:42:31
El problema es que verificar es otro formulario .. y a la hora de acceder .me salia que no esta registrado . es decir que no estaba en el List
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 Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Compartir una List entre dos formularios Windows Form C#

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 27/06/2019 07:54:19
No necesitas pasar un list, con toda la info, suficiente con enviar las credenciales y verificarlo que está o no.

Pero si aún así quieres pasar envíalos en el constructor del siguiente formulario y listo.
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