none
Acceso a miembros de un formulario RRS feed

Respuestas

  • hola Nicolás, yo lo que querio es acceder desde una clase no desde un formulario.

    tengo un formulario llamado FormAgregarUsuario y desde ahi llamo a un método de la clase llamada ClassUsuario

    Esto está en la clase por defecto del formulario, asi invoco al método 

    private void ButtonAgregar_Click(object sender, EventArgs e) { ClassUsuario usuario = new ClassUsuario(); usuario.CrearNuevo(); //Aqui invoco al método }

    public void Correcto() //Esta parte la hice para verificar que servian las llamadas a ls métodos
            {
                this.buttonAgregar.Visible = false; //Esto no funciona, no hace absolutamente nada
                MessageBox.Show("Correcto"); //Esto funciona
            }


    este es el código que está en la clase ClassUsuario 

    class ClassUsuario : ClassCRUD
        {
            FormAgregarUsuario FAU = new FormAgregarUsuario();
    
            public override void CrearNuevo()
            {
    //Aqui agrego guardo datos, pero no se si accede a los txtbox
                Datos[i].Nombre = FAU.textBoxNombre.Text;
                Datos[i].Apellido = FAU.textBoxApellido.Text;
                Datos[i].UserName = FAU.textBoxUsername.Text;
                Datos[i].Contraseña = FAU.textBoxContraseña.Text;
                Datos[i].Tipo = FAU.comboBox.Text;
    
    //Aqui llamo al metodo de la clase del FormAgregarUsuario
                FAU.Correcto();
            }
        }

    He leído en algunos foros que no basta con poner la propiedad llamada "Modifiers" en público, sino que también tienes que mandar el form específico al cual quieres acceder (por cuestiones del compilador), pero no he encontrado la forma.

    Ya encontré la forma de que esto funcione.

    le tienes que mandar el formulario específico a la clase:

    codigo del boton de la clase por defecto del formulario

    private void ButtonAgregar_Click(object sender, EventArgs e)
            {
    
    //Asi le mandas el formulario en específico a la clase para que el compilador lo pueda reconocer
                ClassUsuario usuario = new ClassUsuario(this);
    
                usuario.CrearNuevo(); //LLamada al metodo
            }

    Codigo de la clase usuario

    using System.Windows.Forms; //Le tienes que agregar esta biblioteca a la clase 
    
    class ClassUsuario : ClassCRUD
        {
    
            private Form form; //Muy necesaria esta variable
    
    //Objeto del formulario
            FormAgregarUsuario FAU = new FormAgregarUsuario();
    
    //Hay que hacer un constructor que reciba el dato "this" del formulario
            public ClassUsuario(Form padre) 
            {
    
    //Capturar el dato padre(this) en form, para poder usar la referencia
                form = padre; 
            }
    
    //Despues capturar en el objeto del formulario el dato que le mandamos al constructor para que lo reconozca el compilador
                FAU = (FormAgregarUsuario)form;
    
    //Despues de esto accedes a los campos, etc; como lo haríamos normalmente mediante el objeto "FAU"

    Asi se accede a los campos y datos del formulario desde una clase.

    • Marcado como respuesta Steven_06 viernes, 19 de julio de 2019 19:05
    viernes, 19 de julio de 2019 19:04

Todas las respuestas

  • Hola ! Primero que nada, los controles que vayas a usar, tienes que cambiarles la propiedad llamada "Modifiers", la cambias a Public o Protected si quieres que sea accesible desde solo ese proyecto, luego para comunicar los datos, por ejemplo quieres enviar lo que ahí en un TextBox de un formulario a otro TextBox que se encuentra en otro formulario debes de instanciar el formulario que deseas que reciba el dato y ahí llamas el control que deseas que obtenga el dato. Un ejemplo: 
    FORM QUE ENVÍA DATO
    {
    
    
       public formQueEnviaDato()
       {
         InitializeComponent();
       }
    
       private void btn_Enviar(object sender, EventsArgs e)
       {
          formQueRecibeDato receptor= new formQueRecibeDato ();
          receptor.TextBoxReceptor.Text= TextBoxEmisor.Text;
       }
    
    }
    Saludos !!

    Nicolás Cervera



    jueves, 18 de julio de 2019 3:40
  • hola Nicolás, yo lo que querio es acceder desde una clase no desde un formulario.

    tengo un formulario llamado FormAgregarUsuario y desde ahi llamo a un método de la clase llamada ClassUsuario

    Esto está en la clase por defecto del formulario, asi invoco al método 

    private void ButtonAgregar_Click(object sender, EventArgs e) { ClassUsuario usuario = new ClassUsuario(); usuario.CrearNuevo(); //Aqui invoco al método }

    public void Correcto() //Esta parte la hice para verificar que servian las llamadas a ls métodos
            {
                this.buttonAgregar.Visible = false; //Esto no funciona, no hace absolutamente nada
                MessageBox.Show("Correcto"); //Esto funciona
            }


    este es el código que está en la clase ClassUsuario 

    class ClassUsuario : ClassCRUD
        {
            FormAgregarUsuario FAU = new FormAgregarUsuario();
    
            public override void CrearNuevo()
            {
    //Aqui agrego guardo datos, pero no se si accede a los txtbox
                Datos[i].Nombre = FAU.textBoxNombre.Text;
                Datos[i].Apellido = FAU.textBoxApellido.Text;
                Datos[i].UserName = FAU.textBoxUsername.Text;
                Datos[i].Contraseña = FAU.textBoxContraseña.Text;
                Datos[i].Tipo = FAU.comboBox.Text;
    
    //Aqui llamo al metodo de la clase del FormAgregarUsuario
                FAU.Correcto();
            }
        }

    He leído en algunos foros que no basta con poner la propiedad llamada "Modifiers" en público, sino que también tienes que mandar el form específico al cual quieres acceder (por cuestiones del compilador), pero no he encontrado la forma.

    jueves, 18 de julio de 2019 5:10
  • hola Nicolás, yo lo que querio es acceder desde una clase no desde un formulario.

    tengo un formulario llamado FormAgregarUsuario y desde ahi llamo a un método de la clase llamada ClassUsuario

    Esto está en la clase por defecto del formulario, asi invoco al método 

    private void ButtonAgregar_Click(object sender, EventArgs e) { ClassUsuario usuario = new ClassUsuario(); usuario.CrearNuevo(); //Aqui invoco al método }

    public void Correcto() //Esta parte la hice para verificar que servian las llamadas a ls métodos
            {
                this.buttonAgregar.Visible = false; //Esto no funciona, no hace absolutamente nada
                MessageBox.Show("Correcto"); //Esto funciona
            }


    este es el código que está en la clase ClassUsuario 

    class ClassUsuario : ClassCRUD
        {
            FormAgregarUsuario FAU = new FormAgregarUsuario();
    
            public override void CrearNuevo()
            {
    //Aqui agrego guardo datos, pero no se si accede a los txtbox
                Datos[i].Nombre = FAU.textBoxNombre.Text;
                Datos[i].Apellido = FAU.textBoxApellido.Text;
                Datos[i].UserName = FAU.textBoxUsername.Text;
                Datos[i].Contraseña = FAU.textBoxContraseña.Text;
                Datos[i].Tipo = FAU.comboBox.Text;
    
    //Aqui llamo al metodo de la clase del FormAgregarUsuario
                FAU.Correcto();
            }
        }

    He leído en algunos foros que no basta con poner la propiedad llamada "Modifiers" en público, sino que también tienes que mandar el form específico al cual quieres acceder (por cuestiones del compilador), pero no he encontrado la forma.

    Ya encontré la forma de que esto funcione.

    le tienes que mandar el formulario específico a la clase:

    codigo del boton de la clase por defecto del formulario

    private void ButtonAgregar_Click(object sender, EventArgs e)
            {
    
    //Asi le mandas el formulario en específico a la clase para que el compilador lo pueda reconocer
                ClassUsuario usuario = new ClassUsuario(this);
    
                usuario.CrearNuevo(); //LLamada al metodo
            }

    Codigo de la clase usuario

    using System.Windows.Forms; //Le tienes que agregar esta biblioteca a la clase 
    
    class ClassUsuario : ClassCRUD
        {
    
            private Form form; //Muy necesaria esta variable
    
    //Objeto del formulario
            FormAgregarUsuario FAU = new FormAgregarUsuario();
    
    //Hay que hacer un constructor que reciba el dato "this" del formulario
            public ClassUsuario(Form padre) 
            {
    
    //Capturar el dato padre(this) en form, para poder usar la referencia
                form = padre; 
            }
    
    //Despues capturar en el objeto del formulario el dato que le mandamos al constructor para que lo reconozca el compilador
                FAU = (FormAgregarUsuario)form;
    
    //Despues de esto accedes a los campos, etc; como lo haríamos normalmente mediante el objeto "FAU"

    Asi se accede a los campos y datos del formulario desde una clase.

    • Marcado como respuesta Steven_06 viernes, 19 de julio de 2019 19:05
    viernes, 19 de julio de 2019 19:04