c# - PropertyGrid validation -
मेरे पास एक मैं बटन को नियंत्रित करना चाहता हूं ताकि "बटन" बटन को रद्द करने के बजाय खराब मान को दिखाने के बजाय "ओके" भी मूल मान को सेट कर दिया जाएगा। / p> मैं यह कैसे कर सकता हूं? मैं उस पर क्रोनो में शामिल हो जाऊंगा, यदि आप पूछते हैं कि मैं उस संवाद को कैसे दूर कर सकता हूं , तो मैं जवाब दे सकता हूं अपने टाइप कनोंवर का उपयोग करें : < / P> अगर आप मुझे कुछ संपादित करने के लिए अपना स्वयं का संवाद चाहते हैं , तो मैं जवाब दूंगा का उपयोग स्वयं के UITypeEditor : और उपयोग लेकिन आप चाहते हैं कि त्रुटि डायलॉग (जो दिखाया गया है कि जब सेटिंग / संपत्ति प्राप्त करने में कोई अपवाद होता है) और आप ओके बटन चाहते हैं रद्द करें जैसे ही काम करता है। क्यों? PropertyGrid है। जब मैं एक खराब प्रारूप मान (अर्थात - एक पूर्णांक आइटम में एक स्ट्रिंग) दर्ज करता हूं, तो मुझे एक त्रुटि संदेश मिलता है अगर मैं "ओके" पर क्लिक करता हूं, तब तक बुरा मान रहता है जब तक मैं इसे बदल नहीं सकता। अगर मैं "रद्द" पर क्लिक करता हूं, तो मूल मान वापस आ गया है।
पब्लिक क्लास इंटोकनवर: टाइपकॉन्टर {सार्वजनिक ओवरराइड बूल CanConvertFrom (आईटीआईपी डिस्क्रिप्टर कॉन्टैक्ट संदर्भ, प्रकार स्रोत टाइप) {रिटर्न सही; } सार्वजनिक ओवरराइड बूल CanConvertTo (ITypeDescriptorContext संदर्भ, प्रकार गंतव्य प्रकार) {वापस सच; } सार्वजनिक ओवरराइड वस्तु ConvertFrom (ITypeDescriptorContext संदर्भ, System.Globalization.CultureInfo संस्कृति, वस्तु मूल्य) वापसी 0 {अगर (मूल्य स्ट्रिंग है) {// int करने के लिए अपवाद नहीं है पार्स की कोशिश,}; // हमेशा कुछ लौट} सार्वजनिक ओवरराइड वस्तु ConvertTo (ITypeDescriptorContext संदर्भ, System.Globalization.CultureInfo संस्कृति, वस्तु मूल्य, प्रकार destinationType) {अगर (destinationType == typeof (स्ट्रिंग)) value.ToString वापसी (); वापसी का आधार। रूपांतरण (संदर्भ, संस्कृति, मूल्य, गंतव्य प्रकार); // मैं इसे यहां छोड़ दिया है, लेकिन इसे कभी कॉल नहीं करना चाहिए}}
सार्वजनिक वर्ग MyEditor: UITypeEditor {सार्वजनिक ओवरराइड UITypeEditorEditStyle GetEditStyle (ITypeDescriptorContext संदर्भ) {वापसी UITypeEditorEditStyle.Modal; } सार्वजनिक ओवरराइड ऑब्जेक्ट EditValue (ITypeDescriptorContext संदर्भ, IServiceProvider प्रदाता, ऑब्जेक्ट मान) {फॉर्म 1 फॉर्म 1 = नया फॉर्म 1 (); form1.ShowDialog (); वापसी फार्म 1। कुछ प्रॉपर्टी; }}
[TypeConverter (typeof (IntConverter))] [EditorAttribute (typeof (MyEditor), typeof (UITypeEditor))] सार्वजनिक है int SomeProperty {...}
Comments
Post a Comment