Tengo un formulario principal con 1 método para actualizar el contenido del panel llamado resetPanel() .
También tengo un botón en el formulario principal. Si hago clic en el botón, se abre. Voy a hacer algunos cambios y haga clic en guardar. El contenido se guarda en la base de datos y el formulario hijo se cierra. Ahora el formulario principal se mostrará.

Quiero llamar a la resetPanel() método que ahora, de modo que el panel muestra los valores actualizados.
¿Cómo puedo lograr esto?

  • Pasa una referencia de los padres al hijo. Este podría ser aprobada mediante constructor o un simple método de juego.
  • No hay necesidad de referencia.resetPanel método dentro de Form1.
InformationsquelleAutor turbo88 | 2014-03-06

5 Comentarios

  1. 4

    Si su niño (a) es un de diálogo uno, puedes comprobar el formulario resultado del diálogo:

    //Do not forget to release resources acquired: 
    //wrap IDisposable into using(..) {...}
    using (Form myChildForm = new MyChildForm()) {
      //TODO: If you want to pass something from the main form to child one: do it
    
      //On any result save "Cancel" update the panel
      if (myChildForm.ShowDialog() != DialogResult.Cancel) 
        resetPanel();
    }

    De su hijo en caso de es no un de diálogo puede pasar this en el formulario como referencia a principal:

      Form myChildForm = new MyChildForm(this);
    
      myChildForm.Show(); //<- Just show, not ShowDialog()
    
      ...
    
      private MyMainForm m_MainForm;
    
      public MyChildForm(MyMainForm form) {
        m_MainForm = form;
      }
    
      private void save() {
        //TODO: Save to database here
    
        //Main form update
        if (!Object.ReferenceEquals(null, m_MainForm))
          m_MainForm.resetPanel(); //<- resetPanel should be public or internal method
      }
    
      private saveButton_Click(object sender, EventArgs e) {
        save();
      }
  2. 1

    Después de cerrar su Form2, usted puede llamar a la ResetPanel método:

    Form2 f2 = new Form2();
    f2.ShowDialog();
    resetPanel();  //<-- this will be executed when you close the second form
  3. 0

    para Eg ur de los Padres Nombre del Formulario Si el formulario Form1 y el niño Nombre del Formulario como Form2 goto ur Niño Diseñador de formularios de Cambio de página es un Modificador de Acceso como Público

    y de lo que nunca método que desea Llamar

    Form2 f2=new Form2();
    f2.Show();
    .//from here on you can write your concerned code
    • Formulario de clase de cualquier forma será público por defecto.
    • en ese caso, todo lo que tiene que hacer es acceder a ella..
  4. 0

    Si su resetPanel método es hacer una base de datos llamada, usted posiblemente puede evitar. Aunque esto no tendrá ningún tipo de datos que se actualiza por otro usuario en la aplicación. Acaba de modificar el código de otro respuesta de la mina para sus necesidades. Esto es sólo una muestra:

    public class ParentForm : Form
    {
    Button openButton = new Button();
    public ParentForm()
    {
    openButton.Click += openButton_Click;
    }
    void openButton_Click(object sender, EventArgs e)
    {
    ChildForm childForm = new ChildForm();
    childForm.OKButtonClick += childForm_OKButtonClick;
    childForm.ShowDialog();
    }
    void childForm_OKButtonClick(object sender, MyEventArgs e)
    {
    //Use properties from event args and set data in this form
    }
    }
    public class ChildForm : Form
    {
    Button okButton = new Button();
    TextBox name = new TextBox();
    TextBox address = new TextBox();
    public event EventHandler<MyEventArgs> OKButtonClick;
    public ChildForm()
    {
    okButton.Click += okButton_Click;
    }
    void okButton_Click(object sender, EventArgs e)
    {
    try
    {
    bool saveSucceeded = false;
    //Try saving data here
    if (saveSucceeded)
    {
    if (OKButtonClick != null)
    {
    MyEventArgs myEventArgs = new MyEventArgs();
    //Just get updated data from screen and send it to another form
    myEventArgs.Name = name.Text;
    myEventArgs.Address = address.Text;
    OKButtonClick(sender, myEventArgs);
    }
    Close();
    }
    else
    {
    MessageBox.Show("Data could not be saved.");
    }
    }
    catch (Exception ex)
    {
    //Perform proper exception handling
    }
    }
    }
    public class MyEventArgs : EventArgs
    {
    public string Name
    {
    get;
    set;
    }
    public string Address
    {
    get;
    set;
    }
    }
  5. 0

    Intenta establecer la Save botón en su child Form a DialogResult.Ok y, a continuación, hacer que el botón Guardar como AcceptButton para el Formulario hijo. Y entonces prueba si el resultado si el usuario pulse ese Botón Guardar. Mediante programación se podría parecer a esto:

    Form2 chidForm = new Form2();
    childForm.btnSave.DialogResult = DialogResult.Ok
    childForm.AcceptButton = childForm.btnSave
    if (childForm.ShowDialog() == DialogResult.Ok)
    {
    resetPanel();
    }

    Ahora, asumo aquí que su Save botón en Child Form se denomina btnSave.

Dejar respuesta

Please enter your comment!
Please enter your name here