Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: .NET3.0 C#
i m using windows aaplication and i have 2 windows form ,first is mdi parent and another is mdi child.parent form contain the link of child form .whenever i run my parent form and click link button then child page open ,and then i click cancel button then form get closed.i try to again open child page but when i click lick button then i m getting a error message like "Cannot access a disposed object.
Object name: 'obj'".
Posted 17-Nov-12 16:40pm
Comments
shambhoo kumar at 17-Nov-12 22:21pm
   
Any one help me.....
Sergey Alexandrovich Kryukov at 17-Nov-12 22:24pm
   
Any particular reason to use MDI?
--SA
shambhoo kumar at 17-Nov-12 22:32pm
   
not any particular reason just i try to do it but i m getting problem...so help me.
Sergey Alexandrovich Kryukov at 17-Nov-12 22:38pm
   
I cannot see any valid reason to use such thing. -- I advised what to do instead in my answer (it's in the links to my past answers).
 
I also explained how the problem with disposed forms is solved.
--SA

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You cannot open (show; there is no "open") a form which was closed, because it is disposed. The most usual pattern here is to capture the attempt to close a form and cancel it, hiding it instead. To do so, you would need to either handle the event System.Windows.Forms.Form.FormClosing or override the virtual method System.Windows.Forms.Form.OnFormClosing. As you usually create a form class anyway, let's consider the second way:
 
public partial class MyForm // MyForm : System.Windows.Forms.Form shown in another part, usually auto-generated
{
    protected override OnFormClosing(FormClosingEventArgs e)
    {
        if (e.CloseReason == System.Windows.Forms.CloseReason.UserClosing) // only for this reason 
        {
            Hide();
            e.Cancel = true; // so it won't be actually closed
        }
    }
 
    //...
}
 
Please see:
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.onformclosing.aspx[^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.formclosingeventargs.aspx[^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.formclosingeventargs.closereason.aspx[^],
http://msdn.microsoft.com/en-us/library/system.windows.forms.closereason.aspx[^].
 
Now, about MDI. Here is the idea: who needs MDI, ever? Why torturing yourself and scaring off your users?
Do yourself a great favor: do not use MDI at all. You can do much easier to implement design without it, with much better quality. MDI is highly discouraged even by Microsoft, in fact, Microsoft dropped it out of WPF and will hardly support it. More importantly, you will scare off all your users if you use MDI. Just don't. I can explain what to do instead.
 
Please see:
http://en.wikipedia.org/wiki/Multiple_document_interface#Disadvantages[^],
How to Create MDI Parent Window in WPF?[^].
 
See also my past answers:
Question on using MDI windows in WPF[^],
MDIContainer giving error[^],
How to set child forms maximized, last childform minimized[^].
 
—SA
  Permalink  
Comments
shambhoo kumar at 17-Nov-12 22:46pm
   
Thanks alot sir.....
:)
:):):)
Sergey Alexandrovich Kryukov at 17-Nov-12 22:51pm
   
My pleasure.
Good luck, call again.
--SA
shambhoo kumar at 17-Nov-12 23:05pm
   
ya sir...
i wanna add to u in my facebook frnd so plz sent me your Facebook id.
Sergey Alexandrovich Kryukov at 17-Nov-12 23:15pm
   
Do I look like the one who would use Facebook? :-)
--SA
shambhoo kumar at 20-Nov-12 1:00am
   
But Why Not u use it...?
any reason....?
Sergey Alexandrovich Kryukov at 20-Nov-12 1:07am
   
Reason? Not seeing a reason to use it... :-)
Why? Do you think I have nothing else to do? :-)
--SA
shambhoo kumar at 20-Nov-12 1:13am
   
ha ha ha.......hmm....:)
this is funny.....:)
Sergey Alexandrovich Kryukov at 20-Nov-12 1:37am
   
:-)
shambhoo kumar at 20-Nov-12 10:55am
   
hello sir i m faceing a broblem so plz again u help me..my question is
"how can open multy oledbdatareader at same time in window application."
 
plz u help me one's again.
Sergey Alexandrovich Kryukov at 20-Nov-12 11:42am
   
This is a different question; you can post it separately; and I cannot promise to answer it. Make sure you provide sufficient detail and explain your goals.
 
Just a couple of notes: there is no such thing as "same time" -- there are asynchronous operations, where the order of execution is not determined, is random or pseudo-random, and the logical result of operations is not effected by the order of execution (otherwise it is called "racing condition" which can be defined as "incorrect dependency on the order of execution", a bad thing). If you need to asynchronously read database, you need to do it in two or more separate threads.
 
Probably you also need to understand transactions and transactional properties.
 
--SA
shambhoo kumar at 20-Nov-12 12:00pm
   
exactly i want to say "in one open conection i want to open multy oledbDataReader".
Sergey Alexandrovich Kryukov at 20-Nov-12 12:13pm
   
If you still have issue with that, please post a separate question.
--SA
shambhoo kumar at 20-Nov-12 12:46pm
   
ok sir....

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



Advertise | Privacy | Mobile
Web02 | 2.8.1411022.1 | Last Updated 17 Nov 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100