• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Xáo trôn ngẫu nhiên các item trong listbox

Các thủ thuật liên quan đến việc xử lý ứng dụng, biểu mẫu và control
Hình đại diện của người dùng
Dang Minh Du
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 531
Ngày tham gia: T.Tư 02/04/2008 2:08 pm
Đến từ: RGames Team
Has thanked: 3 time
Been thanked: 17 time
Liên hệ:

Xáo trôn ngẫu nhiên các item trong listbox

Gửi bàigửi bởi Dang Minh Du » T.Tư 06/08/2008 12:11 pm

Thủ thuật: Xáo trôn các item trong listbox
Tác giả: Đặng Minh Dự
Mô tả: Xáo lộn xộn các item trong listbox một cách ngẫu nhiên, có thể chế sang nhiều kiểu khác...
Cần 1 listbox, 1 timer



Mã: Chọn hết

  1.  
  2. Public Cll As New Collection
  3. '-------------------------------
  4. Private Sub CmdMix_Click()
  5. Dim i As Integer
  6. For i = 0 To Lst.ListCount - 1
  7.     Cll.Add Lst.List(i)
  8. Next i
  9. Lst.Clear
  10. Tmr_Mix.Enabled = True
  11. End Sub
  12. '-------------------------------
  13. Private Sub Tmr_Mix_Timer()
  14. Dim i As Integer
  15. Dim ITmp As Integer
  16. For i = 0 To Cll.Count - 1
  17.     Randomize
  18.     ITmp = Int((Cll.Count * Rnd) + 1)
  19.     Lst.AddItem Cll(ITmp)
  20.     Cll.Remove ITmp
  21. Next i
  22. End Sub
  23.  

Test
Mix.rar
(1.7 KiB) Đã tải 511 lần


~°Dòng Sông Mùa Thu°~
Studying...!

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Xáo trôn ngẫu nhiên các item trong listbox

Gửi bàigửi bởi vo_minhdat2007 » T.Tư 06/08/2008 4:28 pm

Tại sao không chuyển đổi thẳng các item của Listbox mà phải dựa vào Collection?

Mã: Chọn hết

  1.        Dim j As Integer
  2.         Dim Temp As String
  3.         With lstList.Items
  4.             For i As Integer = 0 To .Count - 1
  5.                 Randomize()
  6.                 j = Int((.Count - 1) * Rnd())
  7.                 Temp = .Item(i)
  8.                 .Item(i) = .Item(j)
  9.                 .Item(j) = Temp
  10.             Next
  11.         End With

Hình đại diện của người dùng
Dang Minh Du
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 531
Ngày tham gia: T.Tư 02/04/2008 2:08 pm
Đến từ: RGames Team
Has thanked: 3 time
Been thanked: 17 time
Liên hệ:

Re: Xáo trôn ngẫu nhiên các item trong listbox

Gửi bàigửi bởi Dang Minh Du » T.Năm 07/08/2008 3:39 pm

Sao chứ, nếu trộn thẳng các item trong listbox, ta dùng randomize thì lỡ các số trùng lập, rồi sau dc :(
Có thử làm cách của bạn chưa. theo tui thì sẽ có vấn đề :(
~°Dòng Sông Mùa Thu°~
Studying...!

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: Xáo trôn ngẫu nhiên các item trong listbox

Gửi bàigửi bởi vo_minhdat2007 » T.Năm 07/08/2008 5:08 pm

Chuyện trùng lặp thì có thể sẽ có nhưng rất rất rất hiếm. Ngoài ra vì code trên cũng không thấy chỗ nào tránh lặp cả? Đã thử nhiều lần, không thấy bị lặp, nhưng vấn đề khác thì không bị gì cả!


Quay về “[VB] Ứng dụng - Form và Control”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách