2011-10-19 8 views
6

सरल प्रश्न में कॉल करने पर कौन सी घटनाएं ट्रिगर होती हैं। मेरे पास मेनफॉर्म और सेटिंग्सफॉर्म है। सेटिंग फॉर्म को एक बार आरंभ किया जाता है और फिर जब भी उपयोगकर्ता बटन पर क्लिक करता है तो दिखाया जाता है। इस बटन पर क्लिक होने पर मुझे कुछ करने की ज़रूरत है।शोडियलोग (पेरेंटफॉर्म) को C#

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form 

यह मेनफॉर्म सेटिंग फॉर्म को कॉल कर रहा है, जो ठीक है। लेकिन जब भी ऐसा होता है तो मुझे कुछ करने के लिए सेटिंग्सफॉर्म की आवश्यकता होती है। वर्तमान में, मैं यह नहीं समझ सकता कि यह कॉल वास्तव में किसी भी घटना को ट्रिगर करता है जिसके लिए मैं हैंडलर सेट कर सकता हूं। क्या यह एक घटना ट्रिगर करता है? यदि नहीं, तो क्या कोई दूसरा तरीका है कि मैं अपने सेटिंग्सफॉर्म को यह कॉल हर बार कुछ करने के लिए कह सकता हूं?

नोट: सेटिंगफॉर्म लौटने तक उस पंक्ति के बाद मुख्य प्रारूप में कोई भी कोड निष्पादित नहीं होता है, लेकिन यह जानबूझकर है।

धन्यवाद।

संपादित करें: जब मैं ऐसा करता हूं तो एक चीज मैं इसे करने के लिए एक विशिष्ट नियंत्रण का चयन करता हूं, लेकिन ऐसा लगता है कि यह सब कुछ लोड होने के बाद असंभव है।

+0

यह प्रश्न यहां प्रासंगिक है: http://stackoverflow.com/questions/4860490/managed-version-of-spy-tool –

उत्तर

6

आप अपने सेटिंग्स फॉर्म में OnVisibleChanged विधि को ओवरराइड कर सकते हैं। base.OnVisibleChanged कॉल करने के लिए, हालांकि के रूप में घटना के किसी भी संभावित पर्यवेक्षकों अप पेंच नहीं करना सुनिश्चित करें

1

शायद VisibleChanged ईवेंट का उपयोग करें।

3

FormShown घटना (और कुछ और आधार वर्ग कि विधि के अंदर कर सकते हैं।) - केवल एक बार उठाया जब प्रपत्र पहली बार प्रदर्शित किया जाता है। OnPaint/OnActivate - हर बार फॉर्म सक्रिय होता है, लेकिन जब आप अन्य एप्लिकेशन के साथ स्विच करते हैं, तब भी ये ईवेंट उठाए जाते हैं, जो शायद आप नहीं करना चाहते हैं। यदि आप फॉर्म दृश्यता बदल रहे हैं, तो आप OnVisibleChanged का उपयोग कर सकते हैं यदि आप फॉर्म को कम कर रहे हैं, तो आप OnSizeChanged/OnLocationChanged ईवेंट का उपयोग कर सकते हैं।

यदि कोई आपको उपयुक्त नहीं करता है, तो सार्वजनिक संपत्ति बनाएं और फॉर्म बंद होने/छिपे हुए होने पर गलत सेट करें, और इसे दिखाने से पहले सत्य सेट करें। OnActivate, इस संपत्ति का उपयोग अपने कार्य करने के लिए करें।