Saltar al contenido

Cómo llamar a la función desde otro formulario

Después de observar en diferentes repositorios y páginas al terminar hemos descubierto la solución que te enseñamos pronto.

Solución:

¿Sabes qué es la composición sobre herencia?

En el formulario donde tienes MasterReset deberías hacer algo como esto:

Supongamos que en su segundo formulario tiene algo como esto, y supongamos que su “formulario principal” se llamará “MasterForm”.

public partial class Form1 : Form

    private MasterForm _masterForm;  

    public Form1(MasterForm masterForm )
    
        InitializeComponent();
        _masterForm = masterForm;  

    

Aquí está el código en su clase masterForm:

 private void button2_Click(object sender, EventArgs e)
 
     Form1  form1 = new Form1(this);

  

Aquí está en su form1:

private void btn_MasterReset_Click(object sender, EventArgs e)

    _masterForm.MasterReset();
 

¡Espero que esto ayude!

Esto funcionó para mí: en su clase de programa, declare un static instancia de Main (La clase, eso es) llamada Form. Luego, al comienzo de la Main método, uso Form = new Main(); Así que ahora, al iniciar su aplicación, use
Application.Run(Form);

public static Main Form;

static void Main() 
    Form = new Main();
    Application.Run(Form)

Ahora, llamar a una función desde otro formulario es simple.

Program.Form.MasterReset();  //Make sure MasterReset is a public void

Hay múltiples soluciones posibles. Pero el problema en sí surge del mal diseño. Si necesita que muchos accedan a algo, entonces ¿por qué debería pertenecer a alguien? Sin embargo, si desea informar algo sobre cualquier cosa, use eventos.

Tu error es lo que estás creando otra instancia de form1por lo tanto MasterReset está operando con forma, que ni siquiera se muestra.

Lo que puedes hacer:

  1. Haga (como sugiere Ravshanjon) una clase separada para manejar eso MasterReset (y tal vez algo más). Pero también añádele un evento. form1 y form2 pueden suscribirse y cada vez que cualquiera de ellos llama MasterReset – ambos lo harán reaccionar.

  2. Crear dependencia de formulario (como sugirió BRAHIM Kamel): cuando crea form2luego pásala form1 instancia (como parámetro del constructor o configurando la propiedad pública), para poder llamar a público nostatic métodos de form1.

  3. Como un rápido, pero relativamente legitimar solución, haz este método static:


private static Form1 _instance;

public Form1()

    InitializeComponents();
    _instance = this;


public static void MasterReset()

    // alot of code
    _instance.listView1.Clear();
    // alot of code

de esta manera puedes llamar MasterReset de cualquier otra forma como esta Form1.MasterReset(). La desventaja de este método es que no puede tener más de una instancia de form2 (que es más probable de todos modos).

Recuerda algo, que te brindamos la opción de aclarar tu experiencia .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *