2012-01-05 8 views
8

मेरे पास एक ऐसे फॉर्म पर लगभग 20 टेक्स्ट फ़ील्ड हैं जो उपयोगकर्ता भर सकते हैं। मैं उपयोगकर्ता को सहेजने पर विचार करना चाहता हूं अगर उनके पास किसी भी टेक्स्ट बॉक्स में टाइप किया गया है। अभी उस के लिए परीक्षण वास्तव में लंबी और जटिल होता है:प्रत्येक के लिए एक अद्वितीय परीक्षण के बिना शून्य या खाली होने पर मैं एकाधिक टेक्स्टबॉक्स कैसे देख सकता हूं?

if(string.IsNullOrEmpty(txtbxAfterPic.Text) || string.IsNullOrEmpty(txtbxBeforePic.Text) || 
      string.IsNullOrEmpty(splitContainer1.Panel2) ||...//many more tests 

वहाँ एक रास्ता मैं किसी भी की एक सरणी जहां सरणी पाठ बॉक्स से बना है और मैं इसे इस तरह से जाँच की तरह कुछ इस्तेमाल कर सकते हैं है? प्रोग्राम के शुरू होने के बाद से कोई भी बदलाव किस तरह से किया जा सकता है, यह देखने के लिए एक और सुविधाजनक तरीका क्या हो सकता है?

मुझे एक और बात का जिक्र करना चाहिए कि डेट डेट पिकर है। मुझे नहीं पता कि मुझे इसके आसपास परीक्षण करने की ज़रूरत है क्योंकि डेटीमपिकर कभी भी खाली या खाली नहीं होगा।

संपादित करें: मैंने अपने कार्यक्रम में जवाब शामिल किए हैं, लेकिन मैं इसे सही तरीके से काम नहीं कर सकता। मैंने नीचे दिए गए परीक्षण सेट अप किए हैं और एप्लिकेशन को ट्रिगर करते रहें। एक्सिट() कॉल करें।

 //it starts out saying everything is empty 
     bool allfieldsempty = true; 

     foreach(Control c in this.Controls) 
     { 
      //checks if its a textbox, and if it is, is it null or empty 
      if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text))) 
      { 
       //this means soemthing was in a box 
       allfieldsempty = false; 
       break; 
      } 
     } 

     if (allfieldsempty == false) 
     { 
      MessageBox.Show("Consider saving."); 
     } 
     else //this means nothings new in the form so we can close it 
     {     
      Application.Exit(); 
     } 

उपरोक्त कोड के आधार पर मेरे टेक्स्ट बॉक्स में कोई टेक्स्ट क्यों नहीं ढूंढ रहा है?

उत्तर

22

ज़रूर - अपने नियंत्रण के माध्यम से गणना टेक्स्ट बॉक्स की तलाश:

foreach (Control c in this.Controls) 
{ 
    if (c is TextBox) 
    { 
     TextBox textBox = c as TextBox; 
     if (textBox.Text == string.Empty) 
     { 
      // Text box is empty. 
      // You COULD store information about this textbox is it's tag. 
     } 
    } 
} 
9

जॉर्ज जवाब पर बिल्डिंग, लेकिन कुछ आसान LINQ तरीकों का इस्तेमाल कर रही:

if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text))) 
{ 
//Your textbox is empty 
} 
+1

साइड नोट: एक मानक बाहर ऑफ-द-बॉक्स टेक्स्टबॉक्स नियंत्रण कभी भी इसकी टेक्स्ट प्रॉपर्टी में शून्य मूल्य वापस नहीं करेगा। हालांकि LINQ का अच्छा उपयोग! +1 –

+1

आपका उत्तर बेहतर है क्योंकि यह केवल एक बार संदेश बॉक्स फेंक देगा। 'Foreach' कथन MessgeBox फेंक देगा। दिखाएं ("कृपया सभी जानकारी दर्ज करें") कई बार। –

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

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