मेरे पास sum नाम का एक वैरिएबल है, जो कई टेक्स्ट बॉक्स के अंदर के मानों का योग है।

मेरे पास एक बटन है जो टेक्स्ट बॉक्स बनाता है, जहां प्रत्येक टेक्स्ट बॉक्स का मान sum में जोड़ा जाता है, जब तक कि टेक्स्ट बॉक्स के अंदर एक मान होता है।

मेरे पास एक और बटन है जो एक लेबल बनाता है, और मैं चाहता हूं कि label.Text मान sum के बराबर हो।

चर को सार्वजनिक करने और दोनों वर्गों को सार्वजनिक करने के बाद भी, label.Text का मान हमेशा 0 होता है।

यहाँ मेरा कोड है:

Public Class Form

Dim counter As Integer = 1
Dim locationy As Integer = 169
Public sum As Integer = 0

Public Sub btn_New_Click(sender As Object, e As EventArgs) Handles btn_New.Click

    Dim tBox_NewPrice As New TextBox
    tBox_NewPrice.Name = "tBox_NewPrice" & counter
    tBox_NewPrice.Size = New Size(74, 20)
    tBox_NewPrice.Location = New Point(207, locationy)
    Me.Controls.Add(tBox_NewPrice)

    counter = counter + 1
    locationy = locationy + 31

    If tBox_NewPrice.Text <> "" Then
        sum = sum + tBox_NewPrice.Text
    End If
End Sub

Public Sub btn_submit_Click(sender As Object, e As EventArgs) Handles btn_submit.Click
    Dim Label As New Label
    Label.Name = "label1"
    Label.Size = New Size(50, 50)
    Label.Location = New Point(20, 20)
    Me.Controls.Add(Label)
    Me.Refresh()
    Label.Text = sum

End Sub

अंत वर्ग

0
frol 1 अक्टूबर 2018, 00:18

1 उत्तर

सबसे बढ़िया उत्तर

इस प्रकार की स्थिति में (यह समझने की कोशिश कर रहा है कि कोई विधि वह क्यों नहीं कर रही है जिसकी मैं अपेक्षा कर रहा हूं), मुझे लगता है कि अगर मैं यह लिखता हूं कि कोड की प्रत्येक पंक्ति वास्तव में क्या कर रही है, बजाय इसके कि मैं क्या उम्मीद कर रहा हूं, मुझे कारण मिल सकते हैं मुद्दों की। आपके पास दो ईवेंट हैंडलर विधियाँ हैं:

ऐड इवेंट हैंडलर यह तर्क करता है:

  1. एक नया टेक्स्टबॉक्स बनाएं
  2. इसे नाम दें
  3. इसे एक आकार/स्थिति देता है
  4. इसे प्रपत्र के नियंत्रण संग्रह में जोड़ता है
  5. अपनी टेक्स्ट प्रॉपर्टी को योग में मान में जोड़ता है

फिर सबमिट इवेंट हैंडलर यह करता है

  1. एक नया लेबल बनाता है
  2. इसे नाम दें
  3. इसे एक आकार/स्थिति देता है
  4. इसे प्रपत्र के नियंत्रण संग्रह में जोड़ता है
  5. इसके पाठ को योग के मान पर सेट करता है

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

सबमिट इवेंट हैंडलर को कुछ फैशन में दर्ज टेक्स्टबॉक्स से मूल्यों को एकत्र करने के बारे में जाने की जरूरत है। चूंकि टेक्स्टबॉक्स गतिशील रूप से प्रत्येक ऐड इवेंट हैंडलर सबमिशन के साथ फॉर्म में जोड़े जाते हैं, तो सबमिट इवेंट के शीर्ष पर ऐसा कुछ चलाने की आवश्यकता होती है:

sum = 0 
For each ctrl As Control in me.Controls 
  If TypeOf ctrl Is Textbox Then 
    dim txt As Textbox = DirectCast(ctrl, Textbox)
    dim i as Integer =0 
    If Integer.TryParse(txt.Text, i) Then 
       Sum = Sum + i 
    End If 
  End If 
Next 

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

0
Stephen Wrighton 1 अक्टूबर 2018, 00:37