को देखते हुए आपने उल्लेख किया है कि आप एक पॉप त्रुटि संवाद चाहते हैं, ऐसा करने का एक ही रास्ता एक OnClosing
ईवेंट हैंडलर में अपने सत्यापन स्थानांतरित करने के लिए है। इस उदाहरण में यदि उपयोगकर्ता संवाद में प्रश्न के लिए हाँ का उत्तर देता है तो फॉर्म बंद हो जाता है।
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Determine if text has changed in the textbox by comparing to original text.
if (textBox1.Text != strMyOriginalText)
{
// Display a MsgBox asking the user to save changes or abort.
if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// Cancel the Closing event from closing the form.
e.Cancel = true;
// Call method to save file...
}
}
}
e.Cancel = true
सेट करके आप फॉर्म को बंद होने से रोक देंगे।
हालांकि, यह सत्यापन त्रुटियों इनलाइन प्रदर्शित करने के लिए एक बेहतर डिजाइन/उपयोगकर्ता अनुभव (किसी तरह से हमलावर क्षेत्रों पर प्रकाश डाला, टूलटिप्स प्रदर्शित के माध्यम से, आदि) हो सकता है और में ठीक बटन का चयन से उपयोगकर्ता रोका जा सके प्रथम स्थान।
जो काम करेगा ... लेकिन भयानक UI अभ्यास होगा। ओपी पहले ही एक संवाद दिखा चुका है, फिर आप फेंक देते हैं! मौजूदा विनफॉर्म सत्यापन तकनीकों का उपयोग करने के लिए बहुत बेहतर 'ओके' बटन – Adrian
@ एड्रियन अक्षम करें - मैंने "एक तरफ" कहा था;)। यह सब इस बात पर निर्भर करेगा कि त्रुटि कितनी संभावित और/या गंभीर थी। अंतिम निर्णय लेने से पहले मुझे फॉर्म का डिज़ाइन देखना होगा। – ChrisF
सहमत हुए और मैंने अभी ओपी को पढ़ा है और देखा है कि वह पॉप अप करने के लिए एक गंभीर संवाद चाहता था! – Adrian