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

Problema con Texbox y string

Estas en el tema de Problema con Texbox y string en el foro de .NET en Foros del Web. Hola quisiera saber si me pueden ayudar, soy novato en esto de C# y quiero saber por que no me guarda nada el codido user ...
  #1 (permalink)  
Antiguo 23/01/2012, 00:38
Avatar de JoseSonora  
Fecha de Ingreso: enero-2012
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Problema con Texbox y string

Hola quisiera saber si me pueden ayudar, soy novato en esto de C# y quiero saber por que no me guarda nada el codido user = txt_user.Text en la variable user, para asi poderla usar en el codigo

public void btn_aceptar_Click(object sender, EventArgs Arguments)
{

if (user == "usuario" && pass == "contraseña")
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Hide();
}
else
{
MessageBox.Show("Datos Invalidos");
MessageBox.Show(user);
}

}


Aquí les dejo todo el código para que lo revisen y así sea mas fácil dar con el error.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public static string user= string.Empty, pass=string.Empty;

public Form1()
{
InitializeComponent();
}

public void Form1_Load(object sender, EventArgs e)
{
Label lbl_titulo = new Label();
lbl_titulo.Location= new Point(85, 5);
lbl_titulo.Size = new Size(200, 20);
lbl_titulo.Text = "Programa C#";
Controls.Add(lbl_titulo);

Label lbl_user = new Label();
lbl_user.Location = new Point(5, 55);
lbl_user.Size = new Size(50, 25);
lbl_user.Text = "Usuario:";
Controls.Add(lbl_user);

TextBox txt_user = new TextBox();
txt_user.Location = new Point(70, 55);
txt_user.Size = new Size(175, 175);
Controls.Add(txt_user);
user = txt_user.Text;

Label lbl_pass = new Label();
lbl_pass.Location = new Point(5, 95);
lbl_pass.Size = new Size(65, 25);
lbl_pass.Text = "Contraseña:";
Controls.Add(lbl_pass);

TextBox txtpass = new TextBox();
txtpass.Location = new Point(70, 95);
txtpass.Size = new Size(175, 175);
Controls.Add(txtpass);
pass = txtpass.Text;

Button btn_aceptar = new Button();
btn_aceptar.Location = new Point(50, 160);
btn_aceptar.Size = new Size(70, 70);
btn_aceptar.Text = "Aceptar";
btn_aceptar.Click +=new EventHandler(btn_aceptar_Click);
Controls.Add(btn_aceptar);

Button btn_cancelar = new Button();
btn_cancelar.Location = new Point(170, 160);
btn_cancelar.Size = new Size(70, 70);
btn_cancelar.Text = "Cancelar";
btn_cancelar.MouseHover += new EventHandler(btn_cancelar_MouseHover);
btn_cancelar.MouseLeave +=new EventHandler(btn_cancelar_MouseLeave);
btn_cancelar.Click +=new EventHandler(btn_cancelar_Click);
Controls.Add(btn_cancelar);
}



public void btn_cancelar_MouseLeave(object sender, EventArgs Arguments)
{
Text = "Programa C#";
}

public void btn_cancelar_MouseHover(object sender, EventArgs Arguments)
{
Text = "Salir de la aplicacion";
}

public void btn_aceptar_Click(object sender, EventArgs Arguments)
{

if (user == "usuario" && pass == "contraseña")
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Hide();
}
else
{
MessageBox.Show("Datos Invalidos");
MessageBox.Show(user);
}

}

public void btn_cancelar_Click(object sender, EventArgs Arguments)
{
Application.Exit();
}
}
}

De antemano muchas gracias por su tiempo =)
  #2 (permalink)  
Antiguo 23/01/2012, 09:39
Avatar de giovani_loera  
Fecha de Ingreso: mayo-2011
Ubicación: Tijuana
Mensajes: 225
Antigüedad: 13 años
Puntos: 21
Respuesta: Problema con Texbox y string

Es muy sencillo, cuando estas creando los controles el dato del texbox (ya sea el del Usuario y/o password) estan en blanco.

Antes de hacer la condicion del usuario y password, vuelve a leer los datos de los texbox.

Código C#:
Ver original
  1. public void btn_aceptar_Click(object sender, EventArgs Arguments)
  2.  {
  3. user = txt_user.Text;
  4.  pass = txtpass.Text;
  5.  
  6. if (user == "usuario" && pass == "contraseña")
  7.  {
  8.  //....Y lo demas es igual
  #3 (permalink)  
Antiguo 23/01/2012, 09:52
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Problema con Texbox y string

bueno amigo, veo que los controles los estas creando en codigo. he probado tu codigo y efectivamente no guarda ni user ni pass. lo que hice fue crear los textbox al modo tradicional, es decir cree la interfax, y cree este evento
private void txt_user_TextChanged_1(object sender, EventArgs e)
dentro de este evento hice esto
user=txt_user.Text;
y de este modo, guarda lo que se escribe, hice lo mismo para la contraseña
espero te ayude
saludos!!!
  #4 (permalink)  
Antiguo 23/01/2012, 10:02
Avatar de JoseSonora  
Fecha de Ingreso: enero-2012
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema con Texbox y string

Muchas gracias a Alan y a Giovani pero en los dos casos me aparece despues de agregar ese codigo este mensaje de error: El nombre txt_user no existe en el contexto actual mi duda ahora es ¿como quito ese error?
De nuevo muchas gracias >_<
  #5 (permalink)  
Antiguo 23/01/2012, 10:05
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Problema con Texbox y string

Hola que tal, bueno ese error te aparece por que no existe el control ( Claro esta ).

Lo que puedes hacer es anexar un TextBox y ponerle en Nombre de txt_user.

  #6 (permalink)  
Antiguo 23/01/2012, 10:35
Avatar de JoseSonora  
Fecha de Ingreso: enero-2012
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema con Texbox y string

pero ese textbox ya existe

TextBox txt_user = new TextBox();
txt_user.Location = new Point(70, 55);
txt_user.Size = new Size(175, 175);
Controls.Add(txt_user);
user = txt_user.Text;
  #7 (permalink)  
Antiguo 23/01/2012, 11:49
h2d
 
Fecha de Ingreso: enero-2012
Ubicación: Varadero
Mensajes: 3
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Problema con Texbox y string

Hola, lo que te esta pasando es que estas cogiendo el valor de textBox en el load del formulario, o sea, este evento solo se ejecuta cuando el formulario esta cargando su contenido y cuando haces
Código:
user = txt_user.Text;
lo estas haciendo por valor (por defecto en todos los tipos de datos simples como el string). Esto lo podrias hacer con un objeto (lo hace por referencia). En fin la solucion a tu problema seria establecer en la variable user el valor del textBox cada vez que la uses, quedaria asi

Código:
user= txt_user.Text;
if(user=="usuario"...)
o de lo contrario y no seria muy elegante hacerlo, darle valor a la variable user en el evento textChange del textBox, saludos
  #8 (permalink)  
Antiguo 23/01/2012, 12:05
h2d
 
Fecha de Ingreso: enero-2012
Ubicación: Varadero
Mensajes: 3
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Problema con Texbox y string

no existe el textBox porque lo estas creando en el load del formulario, y por supuesto que fuera del contexto de ese evento no existen estas variables, debes crear los controles donde mismo creaste la variable user y en el load se los agragas al formulario, pero te aconsejo que lo hagas de la forma tradicional,arrastrando los controles mediante la interfaz que proporcionan los Ides como Visual Studio, esto te separa la logica del diseño (creacion de controles) con la logica del Negocio lo que vas a hacer cuando el usuario de click, saludos
  #9 (permalink)  
Antiguo 23/01/2012, 12:13
h2d
 
Fecha de Ingreso: enero-2012
Ubicación: Varadero
Mensajes: 3
Antigüedad: 12 años, 3 meses
Puntos: 3
Respuesta: Problema con Texbox y string

el textBox no existe porque lo estas creando en el Load del formulario y por supuesto que todo los variables solo existen en el ambito en que fueron creadas, en este caso el evento Load, lo que puedes hacer es crear todos los controles donde mismo creaste la variable user y lo que harias en el Load seria adicionarselos al formulario. No te aconsejaria esto, seria mas elegante y legible crear los controles usando las bondades de los Ides como Visual Studio mediante la interfaz que proporciona para crear la parte visual, pues de esta forma se separaria el codigo visual (controles) de la logica del negocio (lo que haras cuando el usuario de click) por decirlo de algun modo, saludos
  #10 (permalink)  
Antiguo 23/01/2012, 12:34
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Problema con Texbox y string

tienes que crear el textbox, no mediante codigo si no con los controles que te aparen en tu form, ahi creas el textbox y despues en propiedades le cambias la propiedad Name a txtpass y asi con el otro.
  #11 (permalink)  
Antiguo 23/01/2012, 14:05
Avatar de JoseSonora  
Fecha de Ingreso: enero-2012
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema con Texbox y string

Alan muchisimas gracias jaja no tenia idea de como usar eso como soy novato, pero con esta ltima respuesta ya me salio muchas gracias =).

Y muchas gracias a los demas que tambien me abrieron la mente para pensare :D

Etiquetas: c#, string, textbox
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 23:12.