2013-10-10 2 views
3

Я хочу изменить цвет своего списка в соответствии с его статусом. У меня есть два статуса: «ОЖИДАНИЕ», которое я хочу изменить в «Красный цвет» и «ПОЛНОЕ» на «Синий». Как это возможно? У меня нет идеи, так как это мой первый раз сделать это в виде списка.Изменение цвета строки списка в соответствии с пунктом

+0

победа приложение – BartSabayton

+0

Это означает, что у вас должен быть столбец в базе данных с именем status с данными P для ожидания и C для полного – kabifarm

ответ

2

Нечто подобное возможно:

Dim ListView1 As ListView = New ListView 
    ListView1.BackColor = if(status.tolower = "pending",Color.Red, Color.Blue) 

Или вы можете покрасить indiviual элементы:

Dim lvi As ListViewItem = New ListViewItem 
    lvi.Text = "Test" 
    lvi.BackColor = if(status.tolower = "pending",Color.Red, Color.Blue) 
    ListView1.Items.Add(lvi) 
+0

Я бы настоятельно рекомендовал вам никогда не использовать 'IIf'. Это функция VB с искажениями. Вместо этого используйте условное 'If'. –

+0

@DouglasBarbin Я обновил ответ, чтобы использовать IF вместо inline IIf .. – twoleggedhorse

+0

Вы все еще можете сделать это следующим образом: '_backColor = If (status.tolower =" pending ", Color.Red, Color.Blue)'. Моя точка зрения заключалась в том, что 'IIf' - ужасная функция, которая оценивает обе части условия независимо от того, как оценивается первый логический параметр (boolean). –

0

Sub changeselectedItemcolour()

 Try 
      'Get currently selected items index value 

      Dim i = ListView1.Items.Item(ListView1.SelectedIndices(0)).Index 

      Dim k As Integer = 0 

      'loop entire list and reset colors 

      While k <= ListView1.Items.Count - 1 

       ListView1.Items(k).BackColor = Color.FromArgb(255, 255, 255) 

       ListView1.Items(k).ForeColor = Color.Black 

       k = k + 1 

      End While 
      'set the selected items color 

      Try 

       ListView1.Items(i).BackColor = SystemColors.Highlight 

       ListView1.Items(i).ForeColor = Color.Red 


      Catch ex As Exception 
      End Try 
     Catch ex As Exception 
     End Try 

конца к югу

0

это то, как я сделал мое я добавил эти коды к моему событию петлевого списка следует

ListView1.Items.Clear()

Dim conn As SqlConnection 
    Dim recordinsert As SqlCommand 
    Dim searchme As SqlDataReader 
    Dim strQuery As String 
    conn = New SqlConnection(dbClass.Globconn) 
    conn.Open() 
     strQuery = "select * from salesdetail where invno= '" & txtProformaNo.Text & "' order by snno" 

    recordinsert = New SqlCommand(strQuery, conn) 
    searchme = recordinsert.ExecuteReader 
    Do While searchme.Read() 
     Lv = ListView1.Items.Add(searchme("snno")) 

      Lv.SubItems.Add(searchme("stkcode")) 
      Lv.SubItems.Add(searchme("stkdes")) 
      Lv.SubItems.Add(searchme("qty")) 
      Lv.SubItems.Add(searchme("sprice")) 
      Lv.SubItems.Add(searchme("amt")) 
     If searchme("status") = "S" Then 
      Lv.ForeColor = Color.Green 
     Else 
      Lv.ForeColor = Color.Red 
     End If 
    Loop 
0

я поставил в моей базе данных а номер типа так везде, где подпункты 7 дает ряду столбец цвет будет меняться в зависимости от того, что сохраняется в базе данных

For i As Integer = 0 To ListView1.Items.Count - 1 
      ListView1.Items(i).UseItemStyleForSubItems = False 
      If ListView1.Items(i).SubItems.Count > 1 Then 
       ListView1.Items(i).SubItems(1).BackColor = Color.AntiqueWhite 

       If ListView1.Items(i).SubItems(5).Text > 0 Then 
        ListView1.Items(i).SubItems(5).BackColor = Color.Red 
       End If 

       If ListView1.Items(i).SubItems(7).Text = 0 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.LightBlue 
        ListView1.Items(i).SubItems(1).ForeColor = Color.White 

       ElseIf ListView1.Items(i).SubItems(7).Text = 1 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.LightGray 
        ListView1.Items(i).SubItems(1).ForeColor = Color.White 

       ElseIf ListView1.Items(i).SubItems(7).Text = 2 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.LightSkyBlue 
        ListView1.Items(i).SubItems(1).ForeColor = Color.White 

       ElseIf ListView1.Items(i).SubItems(7).Text = 3 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.LightSteelBlue 
        ListView1.Items(i).SubItems(1).ForeColor = Color.White 
       ElseIf ListView1.Items(i).SubItems(7).Text = 4 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.AntiqueWhite 
       ElseIf ListView1.Items(i).SubItems(7).Text = 5 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.LightGreen 
        ListView1.Items(i).SubItems(1).ForeColor = Color.White 
       ElseIf ListView1.Items(i).SubItems(7).Text = 6 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.CadetBlue 
        ListView1.Items(i).SubItems(1).ForeColor = Color.White 
       ElseIf ListView1.Items(i).SubItems(7).Text = 7 Then 
        ListView1.Items(i).SubItems(1).BackColor = Color.LightYellow 
        ListView1.Items(i).SubItems(1).ForeColor = Color.Black 
       End If 
      End If 
    Next 
0

Try:

For i As Integer = 0 To ListView1.Items.Count - 1 
        With ListView1.Items(i) 
         .UseItemStyleForSubItems = False 
         If .Items(i).SubItems.Count > 1 Then 
          .Items(i).SubItems(0).ForeColoe = Color.Green 
          .Items(i).SubItems(1).BackColor = Color.Yellow 
          .Items(i).SubItems(2).BackColor = Color.Red 
         End If 
        End With 
       Next 
Смежные вопросы