Solved

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

Posted on 2008-06-20
2
818 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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

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

This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
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…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…

617 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