copyPasteGhost
asked on
Easy WinForm Question
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?
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?
ShowDialog - open form and wait to end..
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();
}
ASKER
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.
ASKER
@zwei
where do I put that?
where do I put that?
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();
}
}
ASKER
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?
how would I wire the event to the back button?
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();
Form form2 = new Form(); //use your Form2 form2 = new Form2();
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
ASKER
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?
now what do we do with Form2? since when they click the back button I want them to go back to form1?
wow..
what was that !!??
click 2 times on button in designer
and add code
or
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);
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();
ASKER
right...that I knew...I mean here...In Form2...
private void btnBack_Click(object sender, EventArgs e) {
this.Hide();
this.Show();
}
private void btnBack_Click(object sender, EventArgs e) {
this.Hide();
this.Show();
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
it's all in FORM1
in FORM2 do only
private void btnBack_Click(object sender, EventArgs e) {
this.Hide();
}
in FORM2 do only
private void btnBack_Click(object sender, EventArgs e) {
this.Hide();
}
i must go :/
i hope you got it
i hope you got it
sorry.. in your example make this
Form2 form2 = new Form2();
Form2 form2 = new Form2();
ASKER
perfect thanks.
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();
}
}
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();
}
}
ufff..
:)
youre welcome
:)
youre welcome
it will work too..
Open in new window