मैं एमडीआई का उपयोग बहुत अधिक करता हूं, मुझे कई फ्लोटिंग रूपों की तुलना में यह बहुत अधिक (जहां इसका उपयोग किया जा सकता है) पसंद है।
लेकिन इससे सबसे अच्छा पाने के लिए आपको अपनी खुद की घटनाओं के साथ पकड़ना होगा। यह आपके लिए जीवन को इतना आसान बना देता है।
एक कंकाल का उदाहरण।
अपने स्वयं के इंटरप्ट प्रकार हैं,
//Clock, Stock and Accoubts represent the actual forms in
//the MDI application. When I have multiple copies of a form
//I also give them an ID, at the time they are created, then
//include that ID in the Args class.
public enum InteruptSource
{
IS_CLOCK = 0, IS_STOCKS, IS_ACCOUNTS
}
//This particular event type is time based,
//but you can add others to it, such as document
//based.
public enum EVInterupts
{
CI_NEWDAY = 0, CI_NEWMONTH, CI_NEWYEAR, CI_PAYDAY, CI_STOCKPAYOUT,
CI_STOCKIN, DO_NEWEMAIL, DO_SAVETOARCHIVE
}
फिर अपने खुद के Args प्रकार
public class ControlArgs
{
//MDI form source
public InteruptSource source { get; set; }
//Interrupt type
public EVInterupts clockInt { get; set; }
//in this case only a date is needed
//but normally I include optional data (as if a C UNION type)
//the form that responds to the event decides if
//the data is for it.
public DateTime date { get; set; }
//CI_STOCKIN
public StockClass inStock { get; set; }
}
फिर अपने नाम स्थान के भीतर प्रतिनिधि का उपयोग करें, लेकिन एक वर्ग के बाहर
namespace MyApplication
{
public delegate void StoreHandler(object sender, ControlArgs e);
public partial class Form1 : Form
{
//your main form
}
अब या तो मैन्युअल रूप से या जीयूआई का उपयोग करके, बच्चे के रूपों की घटनाओं के लिए MDIparent प्रतिक्रिया है।
लेकिन अपने उल्लू आर्ग्स के साथ, आप इसे एक ही फ़ंक्शन में कम कर सकते हैं। और आप डिबगिंग के लिए अच्छा है, इंटरप्ट को इंटरप्ट करने का प्रावधान कर सकते हैं, लेकिन अन्य तरीकों से भी उपयोगी हो सकते हैं।
बस अपने mdiparent ईवेंट कोड्स को एक फ़ंक्शन के लिए इंगित करें,
calendar.Friday += new StoreHandler(MyEvents);
calendar.Saturday += new StoreHandler(MyEvents);
calendar.Sunday += new StoreHandler(MyEvents);
calendar.PayDay += new StoreHandler(MyEvents);
calendar.NewYear += new StoreHandler(MyEvents);
एक साधारण स्विच तंत्र आमतौर पर घटनाओं को उपयुक्त रूपों में पारित करने के लिए पर्याप्त है।