我想知道是否有人愿意看下面的代码并帮助解决它。我很感谢来自这个网站的贡献者甚至为我的目标而努力。代码尝试执行以下操作,查看数组中的第一个元素,如果它为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
感谢所有人和任何帮助。
答案 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是列。
关于错误,哪一行会出错?