How to open a new independent form? - c#

I'll start with a code:
private void button_newform_Click(object sender, EventArgs e)
Form newF = new Form();
newF.show();
I have a form with a button who can open a new form.
the problem is, the new form have parent.
for example, if I'll click on newform button, it will create a new form.
but when I close this form, the new form will be closed too.
how to create an independent form, from an existing form?

The reason this is happening is because in the project->application properties, the shutdown mode is set to When startup Form closes. Change that to When Last form closes.

Related

How to close Parent form without closing child form in Windows form in c#

I am trying to make one windows application which contains two forms. In form1(Parent) i created one button for open second form. On that button click event i want to close form1(parent) form and open form2(child) without closing form2, but when i am press that button both forms are closed so how can I do it?
Rather than using .Close() consider using .Hide() on your parent form, this shouldn't dispose of it but rather have it hidden.
Note that exiting out of your Child form means your application won't exit. To circumvent this you should consider subscribing to the OnFormClosed event to handle the form closure.
If you look in "Program.cs" there is a form to start with.
When this form is closed, the application is terminated.
enter image description here
It should be used as a way to hide the startup form.
Even if the child form is closed with the start form hidden, the program does not end.
As #Ae774 said, you need to handle it separately.
If you want to close form1(parent) form and open form2(child) form without closing form2 by click the button, you can refer to the following code:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
Hide();
f2.ShowDialog();
Close();
}
If you want to open the parent form after the child form is closed, you can refer to this code:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
Hide();
f2.ShowDialog();
Show();
}
Here is the test result

WinForms; detecting form closed from another form

Is it possible to detect a form closing from another form.
For example.
If I had a mainForm that opens subForm, can I detect within the mainForm that the subForm has closed and execute code?
I understand I could create an event handler within the subForm, but this is not really what I'm after because what I'm about to do after the subForm closes, is within the mainForm (changes to mainForm).
The FormClosed event is public, so you can create a handler from the main form.
//Inside main Form. Click button to open new form
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.FormClosed += F2_FormClosed;
f2.Show();
}
private void F2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Form was closed");
}
Take a look at the public FormClosedEvent. Since the modifier is public, you're able to do something like the following example:
SubForm subForm = new SubForm();
subForm.FormClosed += delegate
{
MessageBox.Show("subForm has closed");
};
subForm.ShowDialog();
The above example creates a new form (of type SubForm), adds a new event handler to display a message box telling the user that the form has closed, and finally uses the ShowDialog() method which will prevent the user accessing the main form until the sub form has been closed.
The usual case for this is a "Modal Dialog" (like Message Box and its Family).
Every form can be opened as Modal Dialog, by using ShowDialog() isntead of Show().
Otherwise the event way is the only way.

C# - How to close current window and get new window

I'm implementing a window form in C#. I want to close current window and open a new window. (Just like File->New function in applications)
This is my code
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
Image_Editor IE = new Image_Editor(); //Image_Editor is the name of window
IE.Show();
this.Close();
}
Images of what I want to achieve:
(source: infosight.com)
I want to implement the "new" function as shown in the above link. When executing given code, new window just appeared and both windows close at the same time.
What should I do to solve this?
if you mean that you want to close this windows and open a windows like your current windows use this
Myform frm; //thats name of the class of your form like Form1
frm = new Myform();
frm.Show(); // show the secend one
this.Close(); // and close the first one

Creating windows forms open new form

When you create a new Windows Forms application, what's the easiest way from dropping a button on the page, creating a click event which will open a new form.
My method requires clicking a button which will open up 9 new forms, all together, but I want to be able to position them where I want, I know the code for this, I just can't seem to open up multiple new forms at the same time?
Button -> Click -> Open 9 new forms which must be open at the same time.
To open a new form
MyForm myForm = new MyForm()
myForm.Show();
Where MyForm is a class that inherits from Form (i.e. your designed form)
How you would do this would depend on whether the forms are all the same or not but
For i as integer = 0 to 8
dim frm as new Form1
frm.Show
Next
Using the static method ie: form1.show is not generally a good idea.
Cheers
Solution in C# using System.Windows.Forms
private void Button_Click(object sender, EventArgs e)
{
Form myForm = new Form();
myForm.Show();
}
To open more than 1 form, a loop with each form would be required.
foreach (Form form in formArray)
{
form.Show();
}

C# WinForms - Cannot Access Main Form When Child Form Is Open

Scenario
I have a C# WinForms application with a main form. I also have a button on this main form, that, when clicked, creates and displays a new form.
The problem....
...Is that I cannot click on anything on the main form when the new form is open.
The Question
How do I solve this? Is it possible to use both forms simultaneously?
Code To Launch New Form
private void barBtnStatsMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//XtraMessageBox.Show("This Feature Has Not Been Fully Implemented Yet!");
using (StatsMonitorForm frm = new StatsMonitorForm())
{
if (frm.ShowDialog() == DialogResult.OK)
{
}
}
}
ShowDialog() opens a modal dialog.
Show() opens non-modal.
Try frm.Show instead of ShowDialog. ShowDialog opens the new form as a modal dialog so you cannot access the base form until you close this one.
when closing the main form its like closing the app...
so a suggestion would be, disable the main form close button when there are child forms open... and just enable it again when there are no child forms open...
or create a global variable(a bool perhaps), that when a child form is open.. its set to true... so when pressing the close button on the main form... it checks this variable if its true it prompts to save.. else it just closes...
ShowDialog() displays the form in MODAL mode which means you must close new form opened.
private void barBtnStatsMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
//XtraMessageBox.Show("This Feature Has Not Been Fully Implemented Yet!");
using (StatsMonitorForm frm = new StatsMonitorForm())
{
frm.Show();
//do some work here to get the dialog result some other way..
}
}

Categories