2008-11-19 6 views
5

सुप्रभात,पाठ बॉक्स सत्यापन, मुद्दा

मैं एक सी # WinForm अनुप्रयोग है कि नियंत्रण के लिए मान्यता उपयोग कर रहा है पर काम कर रहा हूँ स्विचन ध्यान देते हैं। मेरे पास जो मुद्दा है वह यह है कि जब कोई उपयोगकर्ता टेक्स्टबॉक्स में क्लिक करता है और क्लिक करने का प्रयास करता है, तो सत्यापन नियंत्रण को नियंत्रित करता है और नियंत्रण को फिर से केंद्रित करता है, मूल रूप से उपयोगकर्ता किसी अन्य नियंत्रण में नियंत्रण से बाहर नहीं जा सकता है।

मेरा वांछित परिणाम फॉर्म पर सभी नियंत्रणों को सत्यापित करना है जब उपयोगकर्ता सबमिट बटन पर क्लिक करता है। मैं त्रुटि प्राप्त करना चाहता हूं प्रदाता आइकन त्रुटि वाले फ़ील्ड के बगल में दिखाई देता है और उपयोगकर्ता को फिट होने पर उन्हें सही करने की अनुमति देता है।

मेरा सवाल यह है कि, जब कोई त्रुटि हो तो उपयोगकर्ता को इसके बाहर क्लिक करने की अनुमति देने के लिए नियंत्रण कैसे स्थापित किया जाए। मैं चाहता हूं कि उपयोगकर्ता के पास शेष फॉर्म भरने की क्षमता हो और तुरंत इसके साथ निपटने के लिए मजबूर होने के बजाय स्वयं को त्रुटि पर वापस आएं।

किसी भी मदद और सलाह के लिए अग्रिम धन्यवाद,

उत्तर

2

सबसे आसान तरीका है बस बजाय नियंत्रण में होने का, सबमिट बटन हैंडलर में सभी मान्यता डाल करने के लिए किया जाएगा।

-1

एक संपत्ति है (मुझे लगता है कि यह फ़ॉर्म पर है) जो सत्यापन विफल होने पर फ़ील्ड के बीच स्थानांतरित करने की अनुमति देता है। मुझे याद नहीं है कि इसे क्या कहा जाता है, लेकिन मुझे लगता है कि इसे बहुत वर्णनात्मक नाम दिया गया है।

इस तरह दिखता है:

+0

कारणों की वैधता संपत्ति है, जो मुझे विश्वास है कि आप लक्ष्य नियंत्रण पर सेट हैं - लेकिन आपको * सबकुछ * के लिए इसे गलत पर सेट करने की आवश्यकता होगी। बस पूरे तंत्र, आईएमओ से बचने के लिए सरल। –

+0

शायद यह है कि - निष्पक्ष होने के लिए, हम आमतौर पर बटन क्लिक पर अपना स्वयं का सत्यापन करते हैं ... –

2

हम एक सत्यापन समारोह अगर विधि मान्य और फार्म पर सभी त्रुटि प्रदाताओं सेट कि bool रिटर्न है

private void OnSave() 
    { 
     if(ValidateData()) 
     { 
     //do save 
     } 
    } 

    public bool ValidateData() 
    { 
     errorProvider.Clear(); 
     bool valid = true; 
     if (this.defectStatusComboBox.SelectedIndex == -1) 
     { 
      errorProvider.SetError(defectStatusComboBox, "This is a required feild."); 
      valid = false; 
     } 
     //etc... 
     return valid; 
    } 
23

रूप AutoValidate संपत्ति, जो कर सकते हैं है फोकस बदलने की अनुमति देने के लिए सेट करें

+1

आप महोदय, एक विद्वान और सज्जन हैं। फॉर्म स्तर गुणों की जांच करने के लिए यह मेरे पास भी नहीं हुआ क्योंकि मैं सोच रहा था कि यह या तो त्रुटिप्रवाहक या वैध नियंत्रण होगा – Colton

5

फ़ॉर्म प्रॉपर्टी "ऑटोवालिडेट" है और यह फ़ॉर्म पर सभी नियंत्रणों को प्रभावित करती है। यह एक enum है; इसे System.Windows.Forms.AutoValidate.EnableAllowFocusChange पर सेट करें ताकि उपयोगकर्ता को उस नियंत्रण से बाहर निकलने की अनुमति मिल सके जो सत्यापन विफल रहा है, लेकिन फिर भी त्रुटि आइकन दिखाता है जो उपयोगकर्ता को त्रुटि टूलटिप खींचने की अनुमति देता है।

नियंत्रण "कारणों की वैधता" संपत्ति एक बूलियन है। यदि यह सत्य है तो नियंत्रण सत्यापन घटना को बढ़ाता है जो त्रुटि प्रदाता को ट्रिगर करता है। यह झूठा है, सब कुछ बाईपास हो जाता है, उपयोगकर्ता नियंत्रण से बाहर निकल सकता है, लेकिन कोई त्रुटि आइकन या टूलटिप नहीं है।