Tôi đang làm ví dụ cho người chưa nhận ra rằng các điều khiển như ListBox
không phải chứa chuỗi; anh ta đã lưu trữ các chuỗi định dạng và nhảy qua các vòng phân tích cú pháp phức tạp để lấy dữ liệu ra khỏi số ListBox
và tôi muốn cho anh ta thấy có một cách tốt hơn.Làm cách nào để tôi làm cho ListBox làm mới văn bản mục của nó?
Tôi nhận thấy rằng nếu tôi có một đối tượng được lưu trữ trong ListBox
thì hãy cập nhật giá trị ảnh hưởng đến ToString
, số ListBox
không tự cập nhật. Tôi đã thử gọi Refresh
và Update
trên điều khiển nhưng không hoạt động. Dưới đây là đoạn code của ví dụ tôi đang sử dụng, nó đòi hỏi bạn phải kéo một ListBox và một nút vào biểu mẫu:
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
tôi nghĩ rằng có lẽ vấn đề đã được sử dụng các lĩnh vực và cố gắng thực hiện INotifyPropertyChanged, nhưng điều này không có hiệu lực. (Lý do tôi sử dụng các trường là vì đó là một ví dụ và tôi không cảm thấy muốn thêm vài chục dòng không liên quan gì đến chủ đề mà tôi đang trình bày.)
Thành thật mà nói, tôi chưa bao giờ thử cập nhật các mặt hàng tại chỗ như thế này trước đây; trước đây tôi đã luôn thêm/xóa các mục, chứ không phải chỉnh sửa chúng. Vì vậy, tôi chưa bao giờ nhận thấy rằng tôi không biết làm thế nào để thực hiện công việc này.
Vì vậy, tôi đang thiếu gì?
Điều này thực sự ít hoạt động hơn so với câu trả lời hiện được chấp nhận. Tuyệt vời! Tôi đã chỉnh sửa bài đăng của bạn để bao gồm một ví dụ. – OwenP
Bạn thực sự có thể cải thiện thêm nữa mà tôi nghĩ. Bạn có thể áp dụng các ràng buộc cha và con để kiểm soát ý nghĩa mà bạn có thể làm mà không có trình xử lý sự kiện _SelectedIndexChanged. Tôi quên mã chính xác mặc dù .....: ( – Quibblesome
Tôi đã cập nhật ví dụ, loại bỏ trình xử lý sự kiện SelectedIndexChanged và thay thế bằng 2 dòng mới trong trình xử lý tải. :) – Quibblesome