Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Hartigan en 11 Mayo 2010, 17:14 pm



Título: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 11 Mayo 2010, 17:14 pm
Hola, tengo un listbox en el que se almacenarán nombres. Entonces para agregar los nombres he creado un botón "añadir" que al presionarlo carga un formulario simple con un textBox en el que se introduce el nombre y al darle a aceptar quiero que se añada al listBox.

Como puedo hacerlo??? porque no consigo ver desde el método del botón aceptar del nuevo formuladio el listBox....



gracias de antemano.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: DaNuK en 12 Mayo 2010, 06:10 am
dejame ver si te entendi

capturas el nombre en un textbox y cuando le des clic en aceptar se añada al listbox
es muy facil
aki te dejo el codigo
Código
  1. private void button1_Click(object sender, EventArgs e)
  2.        {
  3.            listBox1.Items.Add(textBox1.Text);
  4.  
  5.        }
  6. private void button2_Click(object sender, EventArgs e)
  7.        {
  8.            textBox1.Text = "";
  9.        }
  10.  
espero te sirve
saludos


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Shell Root en 12 Mayo 2010, 06:49 am
En la forma que lo haces tú (DaNuK), sería la forma correcta si estuviese dentro del mismo formulario. Pero como bien lo dijo Hartigan, es un formulario aparte. Intentad buscar 'Instanciar formularios en c-sharp'. Será algo como estó:
Código
  1.  
  2.   frmFormulario1 frmForm1 = new frmFormulario1();
  3.   frmForm1.Show();
  4.  
  5.  


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 12 Mayo 2010, 16:34 pm
Recomendación: No usen "" para indicar un String vacío. Usen String.Empty. Ya que es estático y es una sola instancia de "".

Saludos!


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: DaNuK en 12 Mayo 2010, 18:48 pm
como no te entiendo D4n3R sobre string.empty podrias poner un ejemplo porfas


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Shell Root en 12 Mayo 2010, 19:18 pm
Supongamos que quieres hacer algo como estó:
Código
  1. if(strVacio != ""){
  2.  //Acciones
  3. }

La mejor forma de hacerlo con String.Empty es así:
Código
  1. if(strVacio != String.Empty){
  2.  //Acciones
  3. }

Aunque creo que da igual la forma en que lo uses, no le veo la diferencia entre usar una u otra. Tal vez sea estilo de programación.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: DaNuK en 12 Mayo 2010, 20:22 pm
Gracias amigo


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 12 Mayo 2010, 20:32 pm
Hola,

Debes usar "" cuando lo comparas con un valor en loop, ya que el runtime conoce el valor de "" justo antes del JIT.

Acuerdense que en .Net todo es un objeto por lo que cada vez que usas "" creas uno. Por lo cual es un poco más eficiente usar String.Empty que "".

Caemos en un dilema, un loop de 10.000, si usamos "" creamos 10.000 objetos más; si usamos String.Empty no los creamos, pero cada vez que se acceda a la propiedad se pierde un poco de tiempo.

Es cuestión de evaluar.

Saludos!


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 12 Mayo 2010, 20:35 pm
Por cierto la opción más rápida es .Length == 0


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Atrum en 13 Mayo 2010, 15:52 pm
Bueno pues volviendo un poco al tema, con respecto a el problema de Hartigan parece que lo que se necesita es una variable publica en el formulario 2 para que haga referencia al listbox del formulario 1

Bueno yo lo haria asi:

Dentro de la clase de mi formulario 2 se declara una variable publica del tipo ListBox:

Código
  1. public ListBox MyList;
  2.  

Despues al instanciar el formulario 2 desde el formulario 1 hacemos esto para asignarla:

Código
  1. Form2 frmNombres = new Form2();
  2. frmNombres.MyList = listBox1;
  3. frmNombres.Show();
  4.  

Donde el ListBox1 es donde se quieren agregar los nombres.

Y ya en el codigo del boton que agrega el nombre en el formulario 2 hacemos esto:

Código
  1.        private void button1_Click(object sender, EventArgs e)
  2.        {
  3.            MyList.Items.Add(textBox1.Text);
  4.        }
  5.  


En teoria debe de funcionar, lo que se hace es pasar el objeto listbox del form 1 como referencia al  form 2 mediante una variable publica, al momento de asignarlo son 2 variables de distintas clases que hacen referencia al mismo objeto, ya que jamas creas la instancia nueva con "new", al agregar los nombres desde el form2 debera aparecer en el listbox del form 1.

Nota: Si nunca haces la asignacion frmNombres.MyList = listBox1 tendras un error de referencia nula.

Saludos.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 13 Mayo 2010, 19:57 pm
Si, pero igual vuelvo yo jeje..

No uses miembros públicos, utiliza propiedades para acceder a éstos.


Código
  1. public ListBox MyListBox
  2. {
  3.     set { m_myListBox = value; }
  4.     get { return m_myListBox; }
  5. }


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 14 Mayo 2010, 12:42 pm
Gacias a todos por las respuestas pero me da el siguiente error haciendo lo que dice Xtriker:

Citar
No se controló System.NullReferenceException
  Message="Referencia a objeto no establecida como instancia de un objeto."
  

Como sería usando la propiedad D4N93R????  esque aun soy bastante novato en esto y no las controlo muy bien. xDD

Salu2.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Atrum en 14 Mayo 2010, 15:36 pm
Asi tal y como lo puso D4N93R, declaras tu miembro privado y accedes a el desde la propiedad:

Código
  1. private Listbox m_myListBox;
  2.  
  3. public ListBox MyListBox
  4. {
  5.     set { m_myListBox = value; }
  6.     get { return m_myListBox; }
  7.  
  8. }
  9.  

lo de la referencia nula te lo marca por que MyListBox tiene el valor Null y no esta asociada con ninguna instancia, pero no se exactamente donde este el problema recien lo probe y me funciono bien, tal ves si pones la parte de tu codigo para checarlo podemos verificar que esta mal.

Por que no colocas un punto de interrupcion en donde asignas el Listbox al miembro publico o a la propiedad, y checas los valores de las variables hasta ese momento y vas ejecutando paso por paso para ver por que se queda tu objeto como null.



Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 14 Mayo 2010, 18:25 pm
Este es el código:

En el formulario 1, tengo esto:

Código
  1. namespace Agenda_1._0.IGU
  2. {    
  3.    public partial class Interfaz_NuevoContacto : Form
  4.    {
  5.  
  6.        public Interfaz_NuevoContacto()
  7.        {            
  8.            InitializeComponent();
  9.  
  10.            Interfaz_NuevoEmail frmNuevoEmail = new Interfaz_NuevoEmail();
  11.            frmNuevoEmail.myListBox = listBox_Email;
  12.            frmNuevoEmail.Show();
  13.  
  14.        }
  15.  
  16.        private void button_AañadirEmail_Click(object sender, EventArgs e)
  17.        {
  18.            Interfaz_NuevoEmail interfazNuevoEmail = new Interfaz_NuevoEmail();
  19.            interfazNuevoEmail.Show();
  20.        }
  21. .....
  22.  

en el formulario 2 tengo:

Código
  1. namespace Agenda_1._0.IGU
  2. {
  3.    public partial class Interfaz_NuevoEmail : Form
  4.    {
  5.        //Variable publica para copiar datos al Form Nuevo_contacto
  6.        public ListBox myListBox;
  7.  
  8.  
  9.        public Interfaz_NuevoEmail()
  10.        {
  11.            InitializeComponent();            
  12.        }        
  13. ...
  14.  
  15.        private void button_AñadirCE_Click(object sender, EventArgs e)
  16.        {
  17.            myListBox.Items.Add(textBox_AñadirCE.Text);
  18.        }
  19. ...
  20.  
  21. }
  22.  
  23.  


De momento lo tengo puesto con la variable pública, en cuanto me funcione lo cambio por la propieda.

Salu2.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 14 Mayo 2010, 19:21 pm
Supongo que el error te lo da en myListBox.Items.Add(textBox_AñadirCE.Text);

Tienes que asegurarte de que en frmNuevoEmail.myListBox = listBox_Email;   listBox_Email no este nulo..


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 14 Mayo 2010, 19:27 pm
Supongo que el error te lo da en myListBox.Items.Add(textBox_AñadirCE.Text);

Tienes que asegurarte de que en frmNuevoEmail.myListBox = listBox_Email;   listBox_Email no este nulo..

Efectivamente el error me lo da ahí. Pero como hago que no esté nulo si primeramente quiero que el listBox este vacio, es decir que no haya ningun email agregado...???


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Atrum en 14 Mayo 2010, 20:19 pm
Bueno, al parecer el error esta aqui:

Al crear una nueva instancia de la clase Interfaz_NuevoEmail, myListBox esta con valor null, entonces en esta parte del codigo no le asignas nada a myListBox

Código
  1.  
  2.        private void button_AañadirEmail_Click(object sender, EventArgs e)
  3.        {
  4.            Interfaz_NuevoEmail interfazNuevoEmail = new Interfaz_NuevoEmail();
  5.            'Aqui faltaria interfazNuevoEmail.myListBox = listBox_Email
  6.            interfazNuevoEmail.Show();
  7.        }
  8.  
  9.  

Por curiosidad por que creas una instancia del Interfaz_NuevoEmail en el constructor?


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 14 Mayo 2010, 20:44 pm
listBox_Email en un listbox en el formulario, o simplemente una variable tipo listbox?


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: 43H4FH44H45H4CH49H56H45H en 14 Mayo 2010, 21:34 pm
Efectivamente el error me lo da ahí. Pero como hago que no esté nulo si primeramente quiero que el listBox este vacio, es decir que no haya ningun email agregado...???

Te toca mejorarlo pero puedes probar asi:

Form1:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Mail
  11. {
  12.    public partial class Form1 : Form
  13.    {
  14.        public Form1()
  15.        {
  16.            InitializeComponent();
  17.        }
  18.  
  19.        private void button1_Click(object sender, EventArgs e)
  20.        {
  21.            Form2 f2 = new Form2();
  22.            DialogResult resul = new DialogResult();
  23.            resul = f2.ShowDialog();
  24.            if (resul == DialogResult.OK && f2.mail != string.Empty)
  25.            {
  26.                listBox1.Items.Add(f2.mail);
  27.            }
  28.        }
  29.    }
  30. }
  31.  

Form2:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Mail
  11. {
  12.    public partial class Form2 : Form
  13.    {
  14.        public string mail;
  15.  
  16.        public Form2()
  17.        {
  18.            InitializeComponent();
  19.        }
  20.  
  21.        private void Form2_Load(object sender, EventArgs e)
  22.        {
  23.            button1.DialogResult = DialogResult.OK;
  24.        }
  25.  
  26.        private void button1_Click(object sender, EventArgs e)
  27.        {
  28.            mail = textBox1.Text;
  29.        }
  30.    }
  31. }
  32.  


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 15 Mayo 2010, 01:09 am
Bueno, al parecer el error esta aqui:

Al crear una nueva instancia de la clase Interfaz_NuevoEmail, myListBox esta con valor null, entonces en esta parte del codigo no le asignas nada a myListBox

Código
  1.  
  2.        private void button_AañadirEmail_Click(object sender, EventArgs e)
  3.        {
  4.            Interfaz_NuevoEmail interfazNuevoEmail = new Interfaz_NuevoEmail();
  5.            'Aqui faltaria interfazNuevoEmail.myListBox = listBox_Email
  6.            interfazNuevoEmail.Show();
  7.        }
  8.  
  9.  

Por curiosidad por que creas una instancia del Interfaz_NuevoEmail en el constructor?


Lo hago para poder mostrar el segundo formulario. Es decir, el primer formulario lo llamo Interfaz_NuevoContacto y el segundo Interfaz_NuevoEmail. De esa manera cargo al pulsar el botón... xD

listBox_Email en un listbox en el formulario, o simplemente una variable tipo listbox?

Es el nombre del listBox dentro del fomulario 1. osea del fomulario Interfaz_Nuevo contacto.


Efectivamente el error me lo da ahí. Pero como hago que no esté nulo si primeramente quiero que el listBox este vacio, es decir que no haya ningun email agregado...???

Te toca mejorarlo pero puedes probar asi:



Gracias, lo pruebo y te comento.

Gracias a todos por la ayuda, probaré a ver lo que me decis a ver si funciona.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 15 Mayo 2010, 01:17 am
Bueno pues resulta que efectivamente había colocado mal las cosas y añadiendo lo que dice Xtriker me ha funcionado. xDD jajaja. asíque ya lo tengo.

43H4FH44H45H4CH49H56H45H lo de los Dialog no es para los cuadros de dialogo???. pregunto porque no lo se. xDD como ya he dicho soy aun novato en esto.

Otra pregunta, me han comentado que estas cosas se hacen mediante los delegados. Que son??? es esto que hemos hecho???. xDD


Muchas gracias a todos por la ayuda, sois unos cracks. xDD


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: 43H4FH44H45H4CH49H56H45H en 15 Mayo 2010, 01:55 am
Si utilizas DialogShow y dialogresult, te permite añadir items al listbox solo si presiona el boton con dialogresult del 2do form, asi puedes hacer todas las validaciones que necesites desde el primer form, la verdad tiene bastantes usos  ;D


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 15 Mayo 2010, 13:24 pm
Bueno chicos ya me funciona perfectamente usando una propiedad en lugar de la variable pública. xDD

Muchas gracias a todos.

La solución de como lo he hecho es poner lo mismo que me han dicho los compañeros.

salu2.



Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 15 Mayo 2010, 16:06 pm
Otra vez yo acá jejeje

No coloques la palabra interfaz en los nombres de los formularios, utiliza otra palabra, como form, formulario, ventana, o lo que quieras, ya que una interfaz, interface en programación es otra cosa:

http://msdn.microsoft.com/en-us/library/ms173156.aspx (http://msdn.microsoft.com/en-us/library/ms173156.aspx)
http://msdn.microsoft.com/en-us/library/87d83y5b(VS.80).aspx (http://msdn.microsoft.com/en-us/library/87d83y5b(VS.80).aspx)

Un saludo!


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 15 Mayo 2010, 17:12 pm
Otra vez yo acá jejeje

No coloques la palabra interfaz en los nombres de los formularios, utiliza otra palabra, como form, formulario, ventana, o lo que quieras, ya que una interfaz, interface en programación es otra cosa:

http://msdn.microsoft.com/en-us/library/ms173156.aspx (http://msdn.microsoft.com/en-us/library/ms173156.aspx)
http://msdn.microsoft.com/en-us/library/87d83y5b(VS.80).aspx (http://msdn.microsoft.com/en-us/library/87d83y5b(VS.80).aspx)

Un saludo!

mmm yo esque los llamo interfaz puesto que van a mostrar las interfaces de mi programa, es decir los menús y demás historias. pero quizás tengas razón y debería llamarlos de otra menera... xD


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 15 Mayo 2010, 18:20 pm
Entonces el nombre completo sería interfaz de usuario :)

Es solo una recomendación,

Un saludo!


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 15 Mayo 2010, 19:21 pm
Entonces el nombre completo sería interfaz de usuario :)

Es solo una recomendación,

Un saludo!

Ok, gracias ;)


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 15 Mayo 2010, 19:27 pm
Tengo una nueva duda con un comboBox. La pregunto aquí para no andar creando otro hilo.

Como puedo hacer para que el comboBox muestre un elemento de la lista desde el principio????.

Salu2.


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 16 Mayo 2010, 03:59 am
comboBox.SelectedIndex = al numero que quieras,  o comboBox.SelectedItem = al objeto, en caso de que metas en los Items puros objetos y entonces en la clase de esos objetos sobre escribes el método ToString y retornas un campo del objeto..


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: Hartigan en 16 Mayo 2010, 12:04 pm
comboBox.SelectedIndex = al numero que quieras,  o comboBox.SelectedItem = al objeto, en caso de que metas en los Items puros objetos y entonces en la clase de esos objetos sobre escribes el método ToString y retornas un campo del objeto..

Oki, muchas gracias, me funcionó perfecto. xDD

Salu2.  ;-)


Título: Re: Ayuda al copiar de un textbox. !! C#
Publicado por: [D4N93R] en 17 Mayo 2010, 15:04 pm
Que bueno!