2009-07-16 10 views
7

मैं किसी विशेष चर परिवर्तन के मूल्य में बटन की दृश्यता टॉगल करना चाहता हूं। क्या कोई वैरिएबल में किसी प्रकार का प्रतिनिधि संलग्न करने का कोई तरीका है जो वैल्यू चेंज करते समय स्वचालित रूप से निष्पादित होता है?सी # में परिवर्तनीय परिवर्तनों के मूल्य के दौरान कोड कैसे निष्पादित कर सकता हूं?

उत्तर

18

नहीं, आप सी # में असाइनमेंट ऑपरेटर ओवरलोडिंग जैसी चीजें नहीं कर सकते हैं। सबसे अच्छा आप कर सकते हैं वैरिएबल को किसी प्रॉपर्टी में बदलना और एक विधि या प्रतिनिधि को सेट करना या उसके सेटर में एक ईवेंट बढ़ा देना।

private string field; 
public string Field { 
    get { return field; } 
    set { 
     if (field != value) { 
      field = value; 
      Notify(); 
     } 
    } 
} 

यह गुण परिवर्तन ट्रैक करने के लिए कई व्यवस्थाएं द्वारा (WPF DependencyProperty सिस्टम की तरह) किया जाता है।

+0

धन्यवाद मेहदद। – Rohit

+0

ऐसा करने के लिए एक उत्कृष्ट आम तकनीक 'INotifyPropertyChanged' इंटरफ़ेस है। –

1

ऐसा करने का कोई तरीका नहीं है। वैरिएबल मूल रूप से मेमोरी में बस होते हैं जो आपका एप्लिकेशन लिखता है।

बजाय एक संपत्ति का उपयोग करें:

string myVariable; 
public string MyVariable 
{ 
    get 
    { 
     return myVariable; 
    } 
    set 
    { 
     myVariable = value; 
     MyVariableHasBeenChanged(); 
    } 
} 

private void MyVariableHasBeenChanged() 
{ 

} 
+0

बस एक छोटा सा अवलोकन, आपके द्वारा इसे बदलने के बाद "MyVariableHasBeenChanged" पर कॉल करना बेहतर होगा। इस तरह आप विधि में इसके साथ कुछ कर सकते हैं और आप असाइनमेंट में फेंकने वाले अपवाद के मामले का सामना कर सकते हैं। –

+0

निश्चित रूप से बेहतर (और शायद एकमात्र उपयोगी तरीका)। धन्यवाद। – weiqure

0

आप या तो (जहां चर रहा है) अपने मॉडल में जीयूआई के लिए एक संदर्भ है और सीधे सेटर विधि में जीयूआई परिवर्तन करते हैं, या आप अपने जीयूआई का पालन करना एक पर्यवेक्षक के माध्यम से आपका मॉडल, और सेटर्स में पर्यवेक्षकों को देखने योग्य मॉडल आग घटनाएं हैं। पूर्व में स्पेगेटी कोड का अंततः नेतृत्व होगा, क्योंकि आप मॉडल और दृश्य के बीच अधिक से अधिक प्रत्यक्ष लिंक जोड़ते हैं, और इस प्रकार इन्हें केवल घर के औजारों और सरल कार्यक्रमों के लिए उपयोग किया जाना चाहिए।

3

Observer pattern का उपयोग करें। यहां another reference है।

+0

क्या आप इस समस्या के समाधान के रूप में पर्यवेक्षक पैटर्न के लिए नकारात्मक वोट को उचित ठहरा सकते हैं? –

+0

आप सही हैं और डाउन-वोटर को अपना सिर लटका देना चाहिए। अपने सबसे सरल रूप में एक पर्यवेक्षक सही पैटर्न है, यह वास्तव में डब्ल्यूपीएफ का उपयोग करता है, इसलिए WPF 'क्या' बदल गया है, यह भी बताने की आवश्यकता है। मैं आपको हल करने के लिए +1 कर दूंगा। –

+0

डाउनवोट क्योंकि यह एक लिंक-केवल जवाब है, मुझे संदेह है। – Blorgbeard

2

आप डेटा बाध्यकारी का उपयोग भी कर सकते हैं: in WPF, Windows Forms में। यह आपको वस्तुओं की गुण और इसके विपरीत के आधार पर जीयूआई की स्थिति बदलने की अनुमति देता है।

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

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