[ Foro de C# ]

Volver del form hijo al form padre (Error system.nullreferenceexception)

22-Mar-2019 23:14
Invitado (Xizted)
2 Respuestas

Hola buenas estoy haciendo un formulario en el cual quiero que al presionar un Button se abra el formulario 2 (con una animación la cual hice con un timer) y desde el formulario 2 al presionar un Button que vuelva al form1 con la misma animación del timer... (Espero y me explique bien)

el codigo del form1 es este:

   using System;
   using System.Collections.Generic;
   using System.ComponentModel;
   using System.Data;
   using System.Drawing;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
   using System.Windows.Forms;

   namespace WindowsFormsApp1
   {
   public partial class tabIngresar : Form
   {
       public tabIngresar()
       {
           InitializeComponent();
       }

       tabRegistro frm2 = new tabRegistro();

       private void textBox1_Click(object sender, EventArgs e)
       {
           textUser.Clear();
           picUsuario.Image = Properties.Resources.User2;
           panelUser.BackColor = Color.FromArgb(78, 184, 206);
           textUser.ForeColor = Color.FromArgb(78, 184, 206);

           picPass.Image = Properties.Resources.Pass1;
           panelPass.BackColor = Color.WhiteSmoke;
           textPass.ForeColor = Color.WhiteSmoke;
       }

       private void textBox2_Click(object sender, EventArgs e)
       {
           textPass.Clear();
           textPass.PasswordChar = '•';
           picPass.Image = Properties.Resources.Pass2;
           panelPass.BackColor = Color.FromArgb(78, 184, 206);
           textPass.ForeColor = Color.FromArgb(78, 184, 206);

           picUsuario.Image = Properties.Resources.User1;
           panelUser.BackColor = Color.WhiteSmoke;
           textUser.ForeColor = Color.WhiteSmoke;

         }

           private void button2_Click(object sender, EventArgs e)
       {
           timer1.Start();
       }
       //Animación
       private void timer1_Tick(object sender, EventArgs e)
       {
           frm2.Left += 10;
           if(frm2.Left >= 830)
           {
               timer1.Stop();
               this.TopMost = false;
               frm2.TopMost = true;
               timer2.Start();
           }
       }

       private void timer2_Tick(object sender, EventArgs e)
       {
           frm2.Left -= 10;
           if(frm2.Left <= 525)
           {
               timer2.Stop();
           }
       }

       private void Form1_Load(object sender, EventArgs e)
       {
           frm2.Show();
       }
   }
}

Y en el form2 aparece el error

El codigo del form 2 es este:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
   public partial class tabRegistro : Form
   {
       public tabRegistro tabIngresar;
       
       public tabRegistro()
       {
           InitializeComponent();
       }

       
       private void textUser_Click(object sender, EventArgs e)
       {
           textUser.Clear();
           picUsuario.Image = Properties.Resources.User2;
           panelUser.BackColor = Color.FromArgb(78, 184, 206);
           textUser.ForeColor = Color.FromArgb(78, 184, 206);

           picPass.Image = Properties.Resources.Pass1;
           panelPass.BackColor = Color.WhiteSmoke;
           textPass.ForeColor = Color.WhiteSmoke;

           picEmail.Image = Properties.Resources.Email1;
           panelEmail.BackColor = Color.WhiteSmoke;
           textEmail.ForeColor = Color.WhiteSmoke;
       }

       private void textPass_Click(object sender, EventArgs e)
       {
           textPass.Clear();
           textPass.PasswordChar = '•';
           picPass.Image = Properties.Resources.Pass2;
           panelPass.BackColor = Color.FromArgb(78, 184, 206);
           textPass.ForeColor = Color.FromArgb(78, 184, 206);

           picUsuario.Image = Properties.Resources.User1;
           panelUser.BackColor = Color.WhiteSmoke;
           textUser.ForeColor = Color.WhiteSmoke;

           picEmail.Image = Properties.Resources.Email1;
           panelEmail.BackColor = Color.WhiteSmoke;
           textEmail.ForeColor = Color.WhiteSmoke;
       }
   
       private void textEmail_Click_1(object sender, EventArgs e)
       {
           textEmail.Clear();
           picEmail.Image = Properties.Resources.Email2;
           panelEmail.BackColor = Color.FromArgb(78, 184, 206);
           textEmail.ForeColor = Color.FromArgb(78, 184, 206);

           picPass.Image = Properties.Resources.Pass1;
           panelPass.BackColor = Color.WhiteSmoke;
           textPass.ForeColor = Color.WhiteSmoke;

           picUsuario.Image = Properties.Resources.User1;
           panelUser.BackColor = Color.WhiteSmoke;
           textUser.ForeColor = Color.WhiteSmoke;
       }
       
       private void button2_Click(object sender, EventArgs e)
       {
           timer1.Start();
       }

       private void timer1_Tick(object sender, EventArgs e)
       {
           
           tabIngresar.Left += 10; //Aqui da el error
               if (tabIngresar.Left >= 830)
               {
                   timer1.Stop();
                   this.TopMost = false;
               tabIngresar.TopMost = true;
                   timer2.Start();
               }
       }

       private void timer2_Tick(object sender, EventArgs e)
       {
           
           tabIngresar.Left -= 10;
           if (tabIngresar.Left <= 525)
           {
               timer2.Stop();
           }
       }
   }
}


26-Mar-2019 22:31
Nacho Cabanes (+41)

Puedes crear un objeto de tipo Form2 desde dentro de Form1, mediante código (Form2 f = new Form2() ).  Luego lo lanzas, y volverá a Form1 automáticamente cuando se cierre.


03-Apr-2019 19:40
Invitado (Xizted)

Hmm vale, lo intente hacer pero no compilaba ya que en el form1 ya hay una variable asi para el form2...






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)