Error raro C#.net

NeB1

He creado un formulario, y a todos los controles que le añado, no les puedo sacar el valor, más bien, siempre me devuelven el valor inicial, aunque lo cambies.

Es decir, yo en un textbox le pongo de valor por defecto 'Your name...' y lo cambias por 'Pepito' y sin embargo al recoger el valor con txtVcName.text, me devuelve 'Your name...'.

Me pasa con TODOS los controles de este formulario, radios, checkbox's, textboxes. Alguien tiene idea de que narices puede ser!?

Soltrac

Mira que no tengas activado el Locked (Botón derecho, bloquear controles), aunque no se si será eso.

NeB1

#2 Nop, la propiedad locked, enabled, readonly, etc. Están correctamente.

El error, creo que viene, porque el formulario, es calcado a otro formulario que tenía, que tiene un huevo huevísimo de campos, así que pille el fichero design.cs (el que contiene las ordenes relativas al diseño de los controles que te crea el propio visual estudio), y copie toda la información (fuí con cuidado de no meter la gamba), además añadí más controles.

Pues bien, creía que el problema podía venir de ese copy y paste, sin embargo en los controles nuevos (los que no he copiado de un form a otro) también tienen el mismo problema. Es mu raro >.<, y tengo 0 de ganas de hacer el formulario de 0 sin copy pastes T_T que son casi 200 campos xDDDD

Gracias por cierto

radykal

Supongo que para mirar el valor del control estarás buscando en la instancia correcta del formulario no? A ver si te lo está cogiendo de la clase y no de la instancia que tienes abierta.

eXtreM3

mmmmmmmm, el formulario que has creado es un hijo? O un formulario sin más?

Prueba a meter un botón de prueba y le pones esto

private void prueba_Click(object sender, EventArgs e)
{
       MessageBox.Show(textBox1.Text);
}

Tiene q sacarte por cojones lo que escribas en el textbox por mensaje al darle al boton..., si te sigue sacando "your name..." no sé qué podrá ser, voy a mirar

NeB1

#5 es más, tengo hecha una función que es

    private void txtvcNombreCampanya_TextChanged(object sender, EventArgs e)
    {
           MessageBox.Show(this.txtvcNombreCampanya.Text);
    }

Es decir, el elemento txtvcNombreCampanya tiene un handler al evento textchanged.

Pues bien, yo voy cambiando el valor del campo de texto, y los messagebox me aparecen en blanco XDDD esto es pa mear y no hechar gota.

Además, el formulario es una clase que es llamada desde otra clase, sin embargo, le pongo el 'this' para asegurarme que hace referencia al formulario en el que estoy. De todas formas es que en todo el documento no hay otro elemento con el mismo nombre!!! (es uno de los que he creado nuevos para este formulario).

Supongo que será una de esas cosas que se solucionan borrandolo todo y volviendolo a hacer >.< pero de verdad, que tengo curiosidad por saber que debe estar pasando.

#4 de la instancia? como si fueran elementos 'static' que se pudiesen llamar sin crear una nueva instancia?

radykal

Mmmh a ver si entiendo tu situación.

Tienes Clase A (cualquier cosa)

Tienes Clase B (el formulario)

Desde clase A quieres leer datos de los controles del formulario B.

Cómo declaras la clase B en la Clase A y cómo intentas leer los datos.

NeB1

#7

tengo formulario MAIN que tiene un miembro declarado de la siguiente forma:

private GestorCampanyas _gc;

main(){
...
_gc = new GestorCampanyas(this);
...
}

GestorCampanyas es otro formulario, tengo unos 10 formularios declarados de la misma forma, y todos funcionan bien, GestorCampanyas incluido.

El problema vino cuando quise hacer un nuevo formulario, muy similar a GestorCampanyas, que lo llamé GestorCampanyasVCard. Como un gran número de campos de texto y de controles, eran identicos en un formulario y en el otro, cogí el GestorCampanyas.designer.cs de GestorCampanyas, y empecé a copiarlo casi todo, con cuidado de no liarla. Tras esto, cogí GestorCampanyas.cs y copié el código que me interesaba también.

Ahora entonces tengo otro miembro declarado de la siguiente forma

private GestorCampanyasVCard _vc;

main(){
...
_vc = new GestorCampanyasVCard(this);
...
}

Cuando ejecuto una acción llamada 'CrearCampanya()', todos los campos del formulario GestorCampanyasVCard, tienen el valor por defecto del campo.

Es decir, en un campo le pongo al crearlo, en la propiedad Text = 'Escribe aquí el nombre de la campaña...' (por ejemplo). Pues cada vez que leo el valor del campo, da igual lo que contenga, y el momento en que lo lea, que siempre tiene ese valor.

De todas formas se ha solucionado volviendo a crear el formulario de 0, algo debí copiar raro :S pero mira que busqueé y no encontré nada fuera de lo común.

NeB1

Ahora iba a borrar la clase que daba los problemas y he visto el error, que vergüenza y que chorrada de error de copy y paste. XD

eXtreM3

Queremos reirnos queremos reirnos!! :qq:

NeB1

el método main debía ser así:

        public gestorCampanyasVCard(main ParentApp)
        {
            InitializeComponent();
            lvFranjas.FullRowSelect = true;
            _ParentApp = ParentApp;
            resetearForm();
        }

y por el copy paste lo había dejado así:

        public gestorCampanyasVCard(main ParentApp)
        {
            InitializeComponent();
            lvFranjas.FullRowSelect = true;
            _ParentApp = ParentApp;
            resetearForm();
            InitializeComponent();
        }

.<

SaReDnAL

Tienes los controles dentro de un groupBox?, te lo digo porque he experimentado problemas similares a los que comentas teniendolos dentro de un groupbox, y echando un ojo al designer encontre el problema

Usuarios habituales

  • SaReDnAL
  • NeB1
  • eXtreM3
  • radykal
  • Soltrac