मैं किसी ऐसे व्यक्ति के लिए एक उदाहरण बना रहा हूं जिसने अभी तक एहसास नहीं किया है कि ListBox
जैसे नियंत्रणों में तार नहीं होना चाहिए; वह ListBox
से डेटा वापस पाने के लिए जटिल पार्सिंग हुप्स के माध्यम से स्वरूपित तारों को संग्रहित कर रहा था और मैं उसे दिखाना चाहता हूं कि वहां एक बेहतर तरीका है।मैं सूची बॉक्स को अपने आइटम टेक्स्ट को रीफ्रेश कैसे कर सकता हूं?
मैंने देखा कि अगर मेरे पास ListBox
में संग्रहीत ऑब्जेक्ट है तो ToString
को प्रभावित करने वाला मान अपडेट करें, ListBox
स्वयं अपडेट नहीं होता है। मैंने नियंत्रण पर Refresh
और Update
पर कॉल करने का प्रयास किया है, लेकिन न तो काम करता है। यहाँ उदाहरण मैं उपयोग कर रहा हूँ के कोड है, यह प्रपत्र पर एक लिस्टबॉक्स और एक बटन खींचें करने की आवश्यकता है:
Public Class Form1
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
For i As Integer = 1 To 3
Dim tempInfo As New NumberInfo()
tempInfo.Count = i
tempInfo.Number = i * 100
ListBox1.Items.Add(tempInfo)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For Each objItem As Object In ListBox1.Items
Dim info As NumberInfo = DirectCast(objItem, NumberInfo)
info.Count += 1
Next
End Sub
End Class
Public Class NumberInfo
Public Count As Integer
Public Number As Integer
Public Overrides Function ToString() As String
Return String.Format("{0}, {1}", Count, Number)
End Function
End Class
मैंने सोचा कि शायद समस्या फ़ील्ड का उपयोग किया गया था और लागू करने की कोशिश की INotifyPropertyChanged, लेकिन इस कोई प्रभाव नहीं पड़ा। (कारण मैं फ़ील्ड का उपयोग कर रहा हूं क्योंकि यह एक उदाहरण है और मुझे कुछ दर्जन लाइनों को जोड़ने की तरह महसूस नहीं होता है, जिनके पास मैं प्रदर्शित कर रहा हूं, उसके साथ कुछ लेना देना नहीं है।)
ईमानदारी से मैंने कभी अपडेट करने का प्रयास नहीं किया है पहले इस तरह की जगहें; अतीत में मैं हमेशा आइटम जोड़ रहा/हटा रहा हूं, उन्हें संपादित नहीं कर रहा हूं। तो मैंने कभी नहीं देखा है कि मुझे नहीं पता कि यह काम कैसे करें।
तो मुझे क्या याद आ रही है?
यह वर्तमान में स्वीकृत उत्तर की तुलना में वास्तव में कम काम है। शानदार! मैंने एक उदाहरण शामिल करने के लिए अपनी पोस्ट संपादित की। – OwenP
आप वास्तव में उसमें सुधार कर सकते हैं जो मुझे लगता है। आप माता-पिता और बाल बाइंडिंग को नियंत्रित करने के लिए लागू कर सकते हैं जिसका मतलब है कि आप _SelectedIndexChanged ईवेंट हैंडलर के बिना कर सकते हैं। मैं सटीक कोड भूल जाता हूं ..... :( – Quibblesome
मैंने उदाहरण अपडेट किया है, चयनित इंडेक्स चेंजेड इवेंट हैंडलर को हटा रहा है और लोड हैंडलर में 2 नई लाइनों के साथ बदल रहा है। :) – Quibblesome