Principales respuestas
Acceso a miembros de un formulario

Pregunta
-
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
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
- Editado Nicolás Cervera jueves, 18 de julio de 2019 3:42
-
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.
- Propuesto como respuesta Pablo RubioModerator viernes, 19 de julio de 2019 18:11
-
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