How to Bring One Form on Another form - c#

Here Form2 is Drawing Viewer And Form3 is toolbar when form2 is maximized form3 is get to back of form2. I want form3(Toolbar) on form3. if i minimize or maximize still form3 should be in front of form2. How can i bring form3 in front of form2

In WinForms there is control named statusStrip. Maybe will be better to use it instead of new form.
Anyway, if you want to do it in your way, you can put in your Form2 to the bottom Panel, in which you can load your Form3 to.

Try using in a method where you have shown form 2
Form Form2 = new Form();
Form2.MdiParent = this;
Form2.Show();
Refer below link for more details :
https://www.codeproject.com/Articles/3553/Introduction-to-MDI-Forms-with-C

Related

How to show a hidden form from a different form?

I have a Form1, Form2 and Form3, Form1 being the main form.
The program starts at Form1, when I click a "next" button Form2 is called and Form1 hides.
Inside Form1:
Form2 form2 = new Form2(this);
this.Hide();
form2.Show();
And inside Form2 there's an "exit" and a "next" button. When I click on exit button, Form2 is closed and goes back to Form1, unhiding it.
Inside Form2 and inside partial class Form2:
private Form parent;
public Form2(Form caller)
{
parent=caller;
}
On exit button:
this.Close();
parent.show();
And at the "next" button of Form2 I call Form3 and close Form2:
Form3 form3 = new Form3();
this.Close();
form3.Show();
Now that I'm in Form3 how can I unhide/show Form1 from Form3 ?
I know that I have to list here the solutions I've tried, but I'm just starting with OOP and I'm stuck trying to do this. I've tried several things but none of them make sense and don't know how to do this.
Just to clarify, I don't want to create a new instance of Form1 I just want to Show the one that's already created.
Any help is really appreciated.
Form1 should look like:
Form2 form2 = new Form2(this);
this.Hide();
form2.Show();
Form2 should look like:
Form3 form3 = new Form3(parent);
this.Close();
form3.Show();
Your form2 knows about your form1 via the parent member, and it can hence give your form1 to Form3 (which should also have a constructor that takes a Form1)
Every form should have a constructor that takes a Form1 and stores it in a parent variable. Every form other than Form1 should pass the parent variable to any new form it creates
You can make this easier using inheritance for the ctor, the next and the close functionality
I do not recommend calling your class Form- call it Form1 so it doesn't clash with System.Windows.Forms.Form
Actually you should call them all something better- MainForm, CreatePersonForm and CreateAddressForm for example

MDI form is beneath the buttons

Form3 newMDIChild = new Form3();
newMDIChild.MdiParent = this;
newMDIChild.Show();
I want to create Mdi form and to do this but Mdichild form under the first form button. just like that
I want Form 3 to be at the top.
how can i fix it?

creating the windows forms with pages

I have created the multiple windows form in C#.For EX. We have two forms and we have next button in Form1 and previous button in Form2 . But when we try to go form Form2 to Form1 using previous button Form2 is not closing and Form1 is appearing on Form2. To show forms we are using ShowDialog. So how can we create the form one linked to another as pages.
What you can do is like this:
In form1's button handler,
form2 f2=new form2();
f2.show();
this.hide();
And in Form2's button handler,
form1 f1=new form1();
f1.show();
this.hide();
But make sure you write proper code in close button handler as the forms are just hidden. Not closed.
It looks like you're trying to implement a "wizard" in your application.
The more typical approach is to have each "page" as a control/user control and load the appropriate step in the same dialog as the user moves along.
You may benefit from looking at some examples leveraging existing libraries to make this simpler. One example is here: https://www.codeproject.com/articles/120607/simple-wizard-for-winforms
This answer also covers this topic and provides a few more resources:
Which wizard control can I use in a WinForms application?

Form location relative to another form

I have a button on a form "Form1", when users click this button, another form "Form2" will pop up. How can I adjust Form2's location so that it is at the center of the Form1 when it pops up? I tried adjusting the location properties but it is not working.
Thanks for the help.
You need to set the StartPosition property of Form2 to CenterParent and show the form using
Form2 form2 = new Form2();
form2.ShowDialog();
If you don't want to show the form as dialog follow the confirmed answer of this question:
How do you set the StartPosition of a Windows Forms form using code?

Showing the second form exactly on the place of first form

From main form (Form1) I am calling to show another form(Form2).
but I want it to show exactly the same place and size that form1 is, so that we wont be able to see form1 anymore until we either close form2 or move it somewhere else.
so I wrote these lines:
Form2 f2 = new Form2();
f2.Left = this.Left;
f2.Top = this.Top;
f2.Size = this.Size;
f2.Show();
But it still has problems. form2 us not completely on form1. any other thing I should add to the code?
Yes, you are doing this the wrong way around. The actual size of the form is only the same as the design size if the machine you run this on has the exact same user preferences, system font size and video DPI setting. If it is off a lot then the DPI setting is different. If it is off a little then the user preferences are different. Like a larger title bar font or bigger buttons. Fix:
Form2 f2 = new Form2();
f2.Show();
f2.Left = this.Left;
f2.Top = this.Top;
f2.Size = this.Size;
If that's too noticeable then you should let the Form2's Load event do this. Pass a reference to your main form or use the Owner property and Show(owner). In other words:
Form2 f2 = new Form2();
f2.Show(this);
in Form2:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
this.Location = Owner.Location;
this.Size = Owner.Size;
}
If you don't want the user to interact with Form1 until Form2 is closed, then change your last line to
f2.ShowDialog();
Then it doesn't matter if the user can still see Form1. Windows won't let Form1 get the focus again until Form2 is closed.
What will happen when show your Form2 with the same size and same locations with Form1? Form1 will be invisible right? So, why you dont use form1.Hide(); ?
try this...
Form2 f2 = new Form2();
f2.Show();
f2.SetBounds(this.Location.X, this.Location.Y,this.Width, this.Height);
//this.Hide(); // if you want to hide 1stform after showing 2nd form
In your form properties for form2, set it to "center on parent"
If the forms are the same size, then this will place form2 over form1 and form 1 is not accessible. Still open the form using modal (form2.ShowDialog()) so focus stays with form2 even if the user moves form two manually.
You will still be able to move form2 like I just mentioned off of form one, but that was not specified as part of this question.

Categories