2009-11-23 11 views
5

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

checkBox.CheckedChanged += new EventHandler((o, e) => 
{ 
    control1.Enabled = checkBox.Checked; 
    control2.Enabled = checkBox.Checked; 
}); 

लेकिन आज मैं DataBindings साथ खेलना शुरू कर दिया और पाया मैं यह कर सकता है:

control1.DataBindings.Add("Enabled", checkBox, "Checked"); 
control2.DataBindings.Add("Enabled", checkBox, "Checked"); 

वे एक ही व्यवहार करने लगते हैं, लेकिन मुझे लगता है एक है दूसरे पर पसंद किया। या शायद किसी के पास कुछ अप्रत्याशित व्यवहार है जो बाद में मुझे यात्रा कर सकता है।

एक तरफ से बेहतर तरीका है?

उत्तर

2

पहला व्यक्ति संकलित समय पर चेक किया गया है, इसलिए मैं उस के साथ जाऊंगा। मुझे लगता है कि अगर दूसरे उदाहरण में "सक्षम" संपत्ति मान्य नहीं है तो आपको रनटाइम त्रुटि मिल जाएगी।

+0

इसके अलावा, आप स्वचालित रूप से दूसरे को "रिफैक्टर" करने में सक्षम नहीं होंगे। –

2

तुम वहाँ एक और अंतर यह है कि नोटिस देना चाहिए:
डेटा बाइंडिंग के साथ (विधि 2), अगर वस्तु को लागू करता है INotifyPropertyChanged, और अगर object.Enabled यूआई परत बाहर बदल गया है, checkbox.checked स्थिति परिवर्तित हो जाएगी खुद ब खुद।

संबंधित मुद्दे