मेरे पास एक DataGridView है जो EditOnF2 पर सेट है। मैं CellEndEdit eventhandler में डेटा की कुछ विशेष प्रसंस्करण करता हूं जो सेल के मान को सेट करता है। जब भी एएससी कुंजी दबाया जाता है तब भी मैं मूल मूल्य पर वापस जाने के EditOnKeystrokeOrF2 की कार्यक्षमता चाहता हूं। दुर्भाग्यवश, CellEndEdit eventhandler पर, मुझे यह बताने का कोई तरीका नहीं दिख रहा है कि सेलएंडएडिट ईवेंट को किस कारण निकाल दिया गया था। यदि एएससी कुंजी दबाया नहीं जाता है तो मैं केवल सेल के मान को बदलना चाहता हूं। मैं कैसे बता सकता हूं कि यह था या नहीं?मैं उस कुंजीस्ट्रोक को कैप्चर कैसे कर सकता हूं जो C# में DataGridView पर "CellEndEdit" को ट्रिगर करता है?
संपादित करें: यह ध्यान देने योग्य है कि जब सेल संपादित किया जा रहा है, और न ही अंतिम समाप्ति कीस्ट्रोक के लिए कीडाउन घटना को निकाल दिया नहीं जाता है।
संपादित 2: मैंने KeyPreview सुझाव की कोशिश की है, लेकिन फ़ॉर्म अभी भी एस्केप कुंजी दबाए जाने पर कब्जा नहीं करता है।
संपादित 3: मैं इस काम को पाने की कोशिश कर प्रयोग कर रहा हूं। मैंने मूल रूप से निम्नलिखित में से कुछ को एक अलग पोस्ट के रूप में पोस्ट किया है, लेकिन ऐसा लगता है कि इसे यहां शामिल करना अधिक प्रासंगिक हो सकता है।
मेरे पास डेटाग्रिड व्यू में एक सेल है जो अब संपादन प्रोग्रामैटिक रूप से सेट है। उसस्ट्रोक को कैप्चर करने के लिए जो एक संपादन शुरू करता है, मैं सेल सेट कर रहा हूं। कीस्ट्रोक के बराबर वैल्यू। हालांकि, यह सेल की "एस्केप" कार्यक्षमता को खंडित करता है - जब आप मूल मूल्य पर वापस जाने के बजाय भागते हैं, तो यह उस कुंजीस्ट्रोक पर वापस आ जाता है जिसे मैंने सेल में प्रोग्रामेटिक रूप से डाला है।
मुझे विश्वास है कि अगर मैं एक सेल पर "संपादित फ़ॉर्मेटेड वैल्यू" सेट कर सकता हूं, तो यह वह जगह होगी जहां मैं अपना कीस्ट्रोक मान रखना चाहता हूं, हालांकि यह केवल पढ़ने के लिए प्रतीत होता है। मैं जो कोशिश कर रहा हूं उसे पूरा कैसे कर सकता हूं?
स्पष्टीकरण के लिए एक उदाहरण: यदि सेल में "54.3" का मान है, और मैं "9" कुंजी दबाता हूं, तो यह सेल को संपादित करना शुरू करता है और वहां "9" रखता है। अगर मैं एस्केप हिट करता हूं, तो इसे "54.3" पर वापस करने के बजाय इसे "9" पर वापस लाया जाता है। मैं चाहता हूं कि यह "54.3" के मूल मूल्य पर वापस आ जाए।
तो, मैं इस मुद्दे को शुरुआत और अंत दोनों से निपटने की कोशिश कर रहा हूं। मुझे लगता है कि वास्तविक समस्या यह है कि मैं मूल मूल्य को ओवरराइट कर रहा हूं और यह निर्धारित करने का कोई तरीका नहीं है कि मुझे इसे वापस करना चाहिए या नहीं।
संपादित 4: ऐसा लगता है कि सेल वैलिडेटिंग का उपयोग करने लायक हो सकता है, लेकिन जब मैं इसका प्रयोग करता हूं तो मुझे अजीब व्यवहार दिखाई देता है। एक नई परियोजना में, मैं डेटाग्रिड व्यू बनाता हूं और विभिन्न कार्यक्रमों के लिए पंजीकरण करता हूं और देखता हूं कि CellValidating को CellEndEdit से पहले निकाल दिया गया है। हालांकि, मेरे प्रोजेक्ट में जहां मैं इसे काम करने की कोशिश कर रहा हूं, सेलएंडएडिट सेल वैलिडेटिंग से पहले फायरिंग कर रहा है। अंतर क्या हो सकता है पर कोई विचार?
धन्यवाद, लेकिन इस कोशिश कर के बाद, यह भागने की कुंजी है की तरह लग रहा अभी भी केवल सेल के संपादन के अंत के रूप में पहचाना जा रहा है, न कि फॉर्म पर एक वास्तविक कीडाउन या कीप्रेस घटना के रूप में। –