कुछ और जटिल करने की कोशिश करते समय, मैं एक ऐसे व्यवहार में भाग गया जो मुझे समझ में नहीं आता है।टेक्स्ट चेंज किए गए ईवेंट - इसका परिणाम अनंत लूप क्यों नहीं होता है?
टेक्स्ट चेंज किए गए ईवेंट को संभालने के नीचे निम्न कोड मानें।
private void textChanged(object sender, TextChangedEventArgs e)
{
TextBox current = sender as TextBox;
current.Text = current.Text + "+";
}
अब, पाठ बॉक्स में एक चरित्र (जैसे कि, ए) टाइपिंग में घटना अंतिम पाठ के साथ दो बार फिसल गया हो रही है (दो जोड़ने '+' रों) किया जा रहा है सिर्फ ए + से प्रदर्शित परिणाम देगा।
मेरे दो प्रश्न हैं, ईवेंट दो बार क्यों मारा जाता है? और घटना के माध्यम से केवल पहला रन क्यों वास्तव में टेक्स्टबॉक्स का पाठ सेट करता है?
अग्रिम धन्यवाद!
क्यों एक सवाल थोड़ा समझ बनाने के लिए लगता है कि है कम से कम 4 मिनट में 3 upvotes? मुझे यह नहीं मिला .... –
... 5 वोट तक और फिर वापस 3 तक गए? hmmmmm ... –
घटना TextBox.TextChanged उठाया जाता है जब TextBox.Text बदल गया है। नमूना कोड, हालांकि, इस अधिसूचना के दौरान पाठ को बदलता है जिसके परिणामस्वरूप टेक्स्ट चेंजड को आगे बढ़ाया जाना चाहिए जिसके परिणामस्वरूप टेक्स्ट का एक नया परिवर्तन होगा ... -> अंतहीन रिकर्सन।
मुझे नहीं पता था कि यह विशेष मामला स्पष्ट रूप से टेक्स्टबॉक्स वर्ग द्वारा संभाला जाता है - वर्णित प्रभाव नहीं होगा। इसके बजाय, TextChanged केवल एक बार उठाया जाएगा। मैंने इस सवाल के माध्यम से कुछ सीखा और इसलिए इसे उखाड़ फेंक दिया। – Matthias