2010-08-27 19 views
7

यह एक WinForms सी # सवाल है।डेटाग्रिड व्यू में सेल मान बदलने पर निगरानी कैसे करें?

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

डेटा बाइंडिंग पूर्ण घटना सेल/पंक्ति/कॉलम स्तर में असहाय है। CellValueChanged ईवेंट स्वयं को भ्रमित कर रहा है क्योंकि यह केवल तब निकाल दिया जाता है जब उपयोगकर्ता UI से मान संशोधित करता है और यदि असमान डेटा स्रोत से मूल्य अपडेट किया जाता है तो असहाय होता है। सुनने के लिए उचित घटना क्या है?

मुझे पता है DataGridViewCell क्लास में ValueChanging ईवेंट है। लेकिन अनुकूलित डेटाग्रिड व्यू में, मैं अपने ईवेंट श्रोता को हर सेल में कैसे लगा सकता हूं?

सहायता के लिए धन्यवाद।

उत्तर

-1

अपने कस्टम नियंत्रण में, आप एक वैश्विक घटना चर की जरूरत है:

public event EventHandler CustomCellValueChanged; 

आप सेल इस के साथ बदल घटना निर्धारित करने की आवश्यकता: अपने रूप में फिर

private void gvGridView_CellValueChanged(object sender, EventArgs e) 
    { 
     EventHandler Handler = CustomCellValueChanged; 
     if (Handler != null) { Handler(this, e); }; 
    } 

, तो आप में सक्षम हो जाएगा ईवेंट को देखने के लिए कस्टमसेलवेलव्यूंग

+1

यह मूल समस्या का समाधान नहीं करता है। यह CellValueChanged की एक अनावश्यक प्रति बनाता है जो कोई उद्देश्य नहीं देता है, क्योंकि उपclass अभी भी मूल घटना तक पहुंच प्रदान करेगा। निर्दिष्ट किए गए प्रश्न के लेखक के रूप में, जब ग्रिड में कोशिकाओं को जोड़ा जाता है तो यह आग नहीं होता है। –

+0

ब्रैडली के साथ सहमत हैं। लेकिन अभी भी प्रयास के लिए धन्यवाद। – Steve

+0

आह क्षमा करें, प्रश्न गलत पढ़ें। मेरी गलती। – Wildhorn

1

1, डेटाग्रिड व्यू को अनुकूलित करते समय आप डेटाग्रिड व्यू का उत्तराधिकारी हो सकते हैं। अगर DataGridView को अनुकूलित करने के लिए UserControl का उत्तराधिकारी है, तो आप सीधे CellValueC नहीं प्राप्त कर सकते अन्य परियोजना या एप्लिकेशन में अनुकूलित डेटाग्रिड व्यू उत्पन्न करते समय फांसी की घटना।

2, सेलवैल्यू चेंज में कुछ करने के लिए।

3, इनहेरिट डेटाग्रिड व्यू लागू करें।

(1) UserControl.Name DataGridViewEx है।

(2) उत्तराधिकारी संशोधित करें। public partial class DataGridViewEx : UserControl ==>public partial class DataGridViewEx :DataGridView

(3) ओपन DataGridViewEx.Designer.cs और ढाल //this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; व्याप्ति वाक्य विधि InitializeComponent() में है।

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