Solved

Easy WinForm Question

Posted on 2009-05-12
22
258 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
ID: 24365512

this.Hide();
Form2 nf = new Form2();
nf.ShowDialog();
 
this.Show();

Open in new window

0
 
LVL 6

Expert Comment

by:Cebik
ID: 24365519
ShowDialog - open form and wait to end..
0
 
LVL 7

Expert Comment

by:zwei
ID: 24365574

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
Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

 
LVL 13

Author Comment

by:copyPasteGhost
ID: 24365605
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
ID: 24365614
@zwei

where do I put that?
0
 
LVL 6

Expert Comment

by:Cebik
ID: 24365692
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
ID: 24365713
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
ID: 24365718
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
ID: 24365742
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
ID: 24365754
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
ID: 24365755
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
 
LVL 6

Expert Comment

by:Cebik
ID: 24365780
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
ID: 24365790
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
ID: 24365823
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
ID: 24365833
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
ID: 24365848
i must go :/
i hope you got it
0
 
LVL 6

Expert Comment

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

0
 
LVL 13

Author Comment

by:copyPasteGhost
ID: 24365888
perfect thanks.
0
 
LVL 6

Expert Comment

by:Cebik
ID: 24365889

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
ID: 24365895
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
ID: 24365900
ufff..
:)
youre welcome
0
 
LVL 6

Expert Comment

by:Cebik
ID: 24365928
it will work too..
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.

813 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

18 Experts available now in Live!

Get 1:1 Help Now