Solved

How do you trap the close button on an MDI child form?

Posted on 2008-06-20
2
816 Views
Last Modified: 2013-12-03
I have a custom use application I am developing, but I'm having a problem with some child forms.  I have one child form (an output console) that needs to be opened to see the debugging output.  I have no problem getting the form to open, minimize, etc.  but, I cannot keep it from releasing it's resources when you click the close (X) button.  I DO NOT want to disable the button.  What I have done is setup an event handler for when the form closes.  Instead of closing, it hides the window.   However, as soon as the window is hidden once, if you try to show (form.show() or form.visible = true;) it errors out and the application locks up.  The error message from VS08 is: System.ObjectDisposedException was unhandled.  The object that was unhandled is the form I want to show.  I'm guessing what is happening is it is getting disposed before the code comes in from my event handler (e.cancel():)  So, I'm guessing my only option is to somehow trap the close button and never initiate a close to being with.  If I could force it to only hide, that should be perfect.  I've searched for days on end and cannot find any solutions other than disabling the close button (again, CAN NOT do this) or handling the closing event like I'm already doing.

Below is the code for my event hanlder:

private void consoleForm_FormClosing(object sender, FormClosingEventArgs e)
        {
                e.Cancel = true;
                this.Hide();
        }

Open in new window

0
Comment
Question by:Journer
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 6

Accepted Solution

by:
Bruce_1975 earned 125 total points
ID: 21831954
You have to override the event handler ;o)

Regards,
Bruce
protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;
    this.Hide();
}

Open in new window

0
 
LVL 2

Author Comment

by:Journer
ID: 21832105
you rock!
0

Featured Post

Revamp Your Training Process

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action.

Question has a verified solution.

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

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!
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Finding and deleting duplicate (picture) files can be a time consuming task. My wife and I, our three kids and their families all share one dilemma: Managing our pictures. Between desktops, laptops, phones, tablets, and cameras; over the last decade…

737 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