2014-02-16 84 views
0

我做了一个谜题的应用程序,你首先从你的电脑中选择一个图像,然后你点击开始,它将图像的一部分,并将它们添加到列表视图。然后你从列表视图中的图像,并把它们放在自由空间。但问题是在列表视图中,图像是有序的(图像部分从右到左和从上到下)。VB.net混合项目的列表视图

我在这里的问题是如何在我的列表视图中随机混合项目(图像)?

+1

你有* *洗牌之前,你的作品将它们添加到列表视图。就像你洗牌一样。只是谷歌,查询“vb.net随机随机播放” –

回答

0

谢谢大家,我发现如何做到这一点: 我创建了一个新的列表视图并将其命名为listview2(第一个是listview1)。 然后我添加完所有图像listview2不LV1,之后我随意添加LV2的项目LV1和它的工作

对于i = 0到ListView2.Items.Count - 1 昏暗的值作为整数= CINT (INT((ListView2.Items.Count - 1)*赛第一轮()))

 ListView1.Items.Add(ListView2.Items(value).Text, ListView2.Items(value).ImageIndex) 
     ListView2.Items(value).Remove() 
    Next i 

问候

2

以随机顺序拆开拼图然后将其存储在LV中会更容易。要做到这一点,你必须为每个拼图块分配一个索引值,如ID。用它来分开这个难题,并知道他们选择了哪一个。

这将创建一个列表(整数),这将是这一难题的标识,并打乱它:

Function RandomList(MaxVal As Integer) As List(Of Integer) 
    Dim rand As New Random() 

    Dim list As New List(Of Integer) 
    Dim temp As Integer 
    Dim ndxRand As Integer 

    For n As Integer = 0 To MaxVal - 1 
     list(n) = n 
    Next 

    For thisNDX As Integer = 0 To MaxVal - 1 
     ndxRand = rand.Next(thisNDX, MaxVal) 
     temp = list(ndxRand) 
     list(ndxRand) = list(thisNDX) 
     list(thisNDX) = temp 
    Next thisNDX 

    Return list 
End Function 

使用它是这样的:

Dim list As List(Of Integer) = RandomList(PieceCount) 

For n As Integer = 0 To PieceCount - 1 
    puzzlePiece = Puzzle.ReMovePiece(List(n)) 

    AddPieceToLV(puzzlePiece) 
Next n 

当然,这仅仅是一个因为我们不知道代码是什么样子。

由于各种原因,直接随机化LV是有问题的。我想象这些作品是图像,我不知道如何分类图像;你必须为它们分配一个值来进行排序。接下来,LV原生只按Item而不是SubItems排序,这是图像可能在LgIcon视图(?...猜测)中显示的位置。接下来,LV只做一个文本排序(除非你还写了一个ListViewItemSorter),这将成为一个超过10的计数问题。更容易将它拆开并随机存储。