列表视图在vb.net中

时间:2010-09-09 06:28:32

标签: vb.net listview

我想知道是否有人愿意看下面的代码并帮助解决它。我很感谢来自这个网站的贡献者甚至为我的目标而努力。代码尝试执行以下操作,查看数组中的第一个元素,如果它为1,则查看元素13-16并使用BLue的前景颜色标识最高值,然后将该值放在第一个元素中列表视图的列和相邻列中的列放置存储在元素7中的数组的值。然而,如果元素0处的值为零,则使用forecolor或RED元素19-22搜索以找到最低值。然后将该值放入第一列,并在相邻列中放入元素7中的值。

麻烦的是它不会那样工作。我想知道是否有人可以帮忙。非常感谢。

  Public Sub listboxplayer1winodds(ByVal parray, ByVal numbofgames)
    Dim win = System.Drawing.Color.DarkBlue
    Dim lose = System.Drawing.Color.DarkRed
    Dim odds = ""
    Dim cards = ""
    Form1.ListOddsP1.Items.Clear()
    Form1.ListOddsP1.Columns.Add("Odds", -2, HorizontalAlignment.Left)
    Form1.ListOddsP1.Columns.Add("Cards", -2, HorizontalAlignment.Left)
    Dim winlvi As New ListViewItem
    Dim loselvi As New ListViewItem
    For k = numbofgames To 1 Step -1
        If parray(k, 0) = 1 Then
            Form1.ListOddsP1.ForeColor = win

            odds = parray(k, 12)
            cards = parray(k, 7)
            For l = 13 To 16
                If parray(k, l) > odds Then
                    odds = parray(k, l)
                    cards = parray(k, 7)
                End If
            Next l
            Form1.ListOddsP1.ForeColor = win
            winlvi.Text = odds
            Form1.ListOddsP1.Items.Add(winlvi)
            winlvi.SubItems.Add(cards)
            Form1.ListOddsP1.ForeColor = win
        Else

            Form1.ListOddsP1.ForeColor = lose
            odds = parray(k, 18)
            cards = parray(k, 7)
            For l = 19 To 22
                If parray(k, l) > 0 And parray(k, l) < odds Then
                    odds = parray(k, l)
                    cards = parray(k, 7)
                End If
            Next l
            Form1.ListOddsP1.ForeColor = lose
            loselvi.Text = odds.ToString
            Form1.ListOddsP1.Items.Add(loselvi)
            loselvi.SubItems.Add(cards)
            Form1.ListOddsP1.ForeColor = lose
        End If

    Next k


End Sub    

感谢所有人和任何帮助。

1 个答案:

答案 0 :(得分:0)

关于额外的列,每次调用此方法时都会添加两个新列,但您永远不会删除它们。

最好的方法是移动线

Form1.ListOddsP1.Columns.Add("Odds", -2, HorizontalAlignment.Left)
Form1.ListOddsP1.Columns.Add("Cards", -2, HorizontalAlignment.Left)

在表单的生命周期中只调用一次的其他方法(我建议使用Form.Load的事件处理程序。)

否则,快速轻松地更改当前代码将更改清除行,不仅清除项目,还清除列以及:

Form1.ListOddsP1.Clear()

关于着色,您目前正在调用类似的内容:

Form1.ListOddsP1.ForeColor

哪个说你希望整个列表都有相同的颜色,你可能想做的就是调用类似

的东西
Form1.ListOddsP1.Items(x).ForeColor

其中x是您要着色的行的索引。或者如果您只想在特定单元格中着色,那么您可能想要这样做:

Form1.ListOddsP1.Items(x).SubItems(y).ForeColor

其中x是行,y是列。

关于错误,哪一行会出错?