From ShowModal to Show

Posted on 2011-09-16
Last Modified: 2013-12-17

I have a main form called MainForm and a second form called StickyNotes.
On the main form I have just one toolbar-button to call for the form StickyNotes.
It looks like this:

private void tbNewNote_Click(object sender, EventArgs e)
frmNote.txtCaption.Text = "";
frmNote.lblCreation.Text = (DateTime.Now.ToString());
if (frmNote.ShowDialog() == System.Windows.Forms.DialogResult.OK) <=========================
ListViewItem myItem = new ListViewItem(frmNote.txtCaption.Text, 0);
myItem = lvNotes.Items.Add(myItem);

But now I don't want to use a ShowDialog anymore but use multilpe forms
of the StickyNotes.What do I have to change in the code above to achieve this.

Who knows the answer and is willing to help me?

Greetings, Peter Kiers
Question by:peterkiers

Expert Comment

ID: 36551272
Hi Peter,

It sounds as though you want to go to MDI (Multiple Document Interface), meaning that you have multiple child forms for a single parent form.

To do this, set the IsMdiContainer property of the main form to True.

Then change your code as follows:

private void tbNewNote_Click(object sender, EventArgs e)
    frmNote.txtCaption.Text = "";
    frmNote.lblCreation.Text = (DateTime.Now.ToString());
    frmNote.MdiParent = this;

Open in new window

However, unless you are going to ShowDialog you cannot wait for something to occur before you do something.  You will therefore need to move your save code into frmNote.

Once you have done this you will be able to create multiple notes at once.

Chris Bray

Author Comment

ID: 36551321
Hi, thanks for the reaction but I don't use MDI. Its just the mainform with a button
and by pressing on that button another form shows up called the StickyNotes.cs.

LVL 15

Accepted Solution

x77 earned 500 total points
ID: 36551332
You need suscribe FormClosed event for your new form.

Then you can cast Sender when StickyNotes is closed.
private void Button1_Click(object sender, EventArgs e)
    StickyNotes f = new StickyNotes();
    f.FormClosed += new FormClosedEventHandler(this.child_FormClosed);

private void child_FormClosed(object sender, FormClosedEventArgs e)
    Debug.Print(((StickyNotes) sender).Name);

Open in new window


Author Comment

ID: 36551403
Thanks. Peter
LVL 40
ID: 36551414
ShowDialog is a special command that you use in special occasions, since it freezes the code for as long as the form is visible.

Use Show instead.

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Library to convert HTML to PDF. 8 44
C# Problem Solving Execerscise 5 40
.Net application crashing 6 20
Data Saving 5 28
In my previous two articles we discussed Binary Serialization ( and XML Serialization ( In this article we will try to know more about SOAP (Simple Object Acces…
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!
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Internet Business Fax to Email Made Easy - With eFax Corporate (, you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

708 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

13 Experts available now in Live!

Get 1:1 Help Now