Solved

Easy WinForm Question

Posted on 2009-05-12
22
250 Views
Last Modified: 2012-05-06
Hello all,

I'm a asp.net guy not really a winform guy. I want to know something so simple it's stupid :)

I have two forms. form1 and form2

on form1 I have a button go to form2

when I click the button I do this:

this.Hide();
Form2 frm2 = new Form2();
frm2.Show();

and then we are now in form2.

on form2 I have a back button...

how can I get back to the first form...

obviously if I do this:

this.Hide();
Form1 frm1 = new Form1();
frm1.Show();

I will now have 2 form1 objects. (which I don't want.) and it will flush all the information that I put on Form1.

Any ideas how to do this?
0
Comment
Question by:copyPasteGhost
  • 14
  • 6
  • 2
22 Comments
 
LVL 6

Expert Comment

by:Cebik
Comment Utility

this.Hide();

Form2 nf = new Form2();

nf.ShowDialog();
 

this.Show();

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
ShowDialog - open form and wait to end..
0
 
LVL 7

Expert Comment

by:zwei
Comment Utility

form1Button.Click += new System.Eventhandler(form1Button_Click);

form2Button.Click += new System.Eventhandler(form2Button_Click);
 

form1Button_Click(object sender, Eventargs e)

{

    form1.Hide();

    form2.Show();

}
 
 

form2Button_Click(object sender, Eventargs e)

{

    form1.Show();

    form2.Hide();

}

Open in new window

0
 
LVL 13

Author Comment

by:copyPasteGhost
Comment Utility
But for form 2 I want them to be able to go back to form1 and then if they want be able to go back to form2 again and still have everything there....like a previous/next kind of set up without loosing any information and without creating multiple objects.
0
 
LVL 13

Author Comment

by:copyPasteGhost
Comment Utility
@zwei

where do I put that?
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
Try this then.
:)

public partial class Form1 : Form

{

    Form form2 = new Form();
 

    public Form1()

    {

        InitializeComponent();
 

        form2.FormClosing += new FormClosingEventHandler(nf_FormClosing);

    }
 

    private void button1_Click(object sender, EventArgs e)

    {

        this.Hide();
 

        form2.Show();

    }
 

    void nf_FormClosing(object sender, FormClosingEventArgs e)

    {

        e.Cancel = true;

        ((Form)sender).Hide();

        this.Show();

    }

}

Open in new window

0
 
LVL 13

Author Comment

by:copyPasteGhost
Comment Utility
it's not really when form2 closes...it's when they click a back button..

how would I wire the event to the back button?
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
When somebady try to close form2 then we not allowed to do that and we hide form2 and show main form.

Form form2 = new Form();  //use your Form2 form2 = new Form2();
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
form2ButtonBack
.
Click
 
+=
 
new
 
System
.
Eventhandler
(
form2ButtonBack

_Click
);form2Button.Click += new System.Eventhandler(form2Button_Click);

or click 2 times on button in designer
and add code

Open in new window

0
 
LVL 13

Author Comment

by:copyPasteGhost
Comment Utility
ok I see...

now what do we do with Form2? since when they click the back button I want them to go back to form1?
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
wow..
what was that !!??


click 2 times on button in designer
and add code

or

form2ButtonBack.Click += new System.Eventhandler(form2ButtonBack_Click);form2Button.Click += new System.Eventhandler(form2Button_Click);

Open in new window

0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 6

Expert Comment

by:Cebik
Comment Utility
this
.
Show
();   //if we are in class FORM1
or
form1.Show();  //show form1... 

you cant do new form.. 
new Form1(..)
you must have acces to

form1.Show();

Open in new window

0
 
LVL 13

Author Comment

by:copyPasteGhost
Comment Utility
right...that I knew...I mean here...In Form2...

private void btnBack_Click(object sender, EventArgs e) {
         this.Hide();
         this.Show();
      }
0
 
LVL 6

Accepted Solution

by:
Cebik earned 500 total points
Comment Utility
no..

make this

Form form2 = new Form();
 

public Form1()

{

    InitializeComponent();
 

    form2.VisibleChanged += new EventHandler(form2_VisibleChanged);

}
 

void form2_VisibleChanged(object sender, EventArgs e)

{

    //set visible of form1 to form2.Visible negation!

    this.Visible = !form2.Visible;

}
 

private void buttonShowForm2_Click(object sender, EventArgs e)

{

    form2.Show();

}

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
it's all in FORM1

in FORM2 do only

private void btnBack_Click(object sender, EventArgs e) {
         this.Hide();
      }
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
i must go :/
i hope you got it
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
sorry..  in your example make this
Form2 form2 = new Form2();

0
 
LVL 13

Author Comment

by:copyPasteGhost
Comment Utility
perfect thanks.
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility

public partial class Form1 : Form

{

    Form2 form2 = new Form2();
 

    public Form1()

    {

        InitializeComponent();
 

        form2.VisibleChanged += new EventHandler(form2_VisibleChanged);

    }
 

    void form2_VisibleChanged(object sender, EventArgs e)

    {

        //set visible of form1 to form2.Visible negation!

        this.Visible = !form2.Visible;

    }
 

    private void buttonShowForm2_Click(object sender, EventArgs e)

    {

        form2.Show();

    }

}

Open in new window

0
 
LVL 7

Expert Comment

by:zwei
Comment Utility
In my example I meant something like this:
//Form2 class:

public partial class Form2 : Form

    {

        private Form1 form1;

        

        public Form2(Form1 form)

        {

            InitializeComponent();

            form1 = form;

        }
 

        private void backBtn_Click(object sender, EventArgs e)

        {

            form1.Show();

            this.Hide();

        }

    }
 

//Form1 class:

 public partial class Form1 : Form

    {

        private Form2 form2;

        

        public Form1()

        {

            //

            // The InitializeComponent() call is required for Windows Forms designer support.

            //

            InitializeComponent();

            form2 = new Form2(this);

        }
 

        private void backBtn_Click(object sender, EventArgs e)

        {

            form2.Show();

            this.Hide();

        }

    }

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
ufff..
:)
youre welcome
0
 
LVL 6

Expert Comment

by:Cebik
Comment Utility
it will work too..
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Bit flags and bit flag manipulation is perhaps one of the most underrated strategies in programming, likely because most programmers developing in high-level languages rely too much on the high-level features, and forget about the low-level ones. Th…
Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now