2010-09-09 59 views
0

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

麻烦是不是这样工作。我想知道有没有人可以帮忙。非常感谢。

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

“它不这样工作”是一个非常模糊的描述。请参阅http://tinyurl.com/so-hints关于如何编写人们希望(并能够)回答的问题的一些想法。 – 2010-09-09 06:32:26

+0

抱歉,模糊不清。第一个缺点是例程不断创建列而不仅仅是我想要的两个列。数据只存在于前两栏中。其次,数据都是相同的前景色,即两列中的所有数据都是全部红色或全部蓝色。偶尔我也会得到错误,无法重复值,请更改值或克隆它。再次,对于模糊性感到抱歉。 – simon 2010-09-09 06:44:25

回答

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是列。

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

+0

谢谢!谢谢!谢谢!我只有我想要的列数,并且数据以我想要的颜色呈现!至于我解决了这个错误,Dim winlvi作为新的ListViewItem和Dim loselvi作为新的ListViewItem在循环中出现错误的地方。感谢所有的帮助。 – simon 2010-09-09 09:15:08