2014-12-16 5 views
0

Как я могу добавить определенные изображения в ImageColumn в DataGridView на основе текста в определенном столбце?Изображение DataGridViewImageColumn на основе текста в определенном столбце

пример:

Column1 Столбец2 Column3 ImageColumn
сайт название информация логотип

Я хочу, чтобы логотип/изображение, которое будет изменено и показать «правильный» логотип для каждого веб-сайта, а не один и тот же образ для всех веб-сайты.

Теперь у меня есть это, чтобы добавить красивые логотипы, но он просто добавляет один и тот же логотип на каждую строку.

Dim img As New DataGridViewImageColumn() 
     Dim inImg As Image = PictureBox1.Image 
     img.Image = inImg 
     DataGridView1.Columns.Add(img) 
     img.HeaderText = "Website" 
     img.Name = "img" 

я попытался обернуть этот код в «если dataGridView1 ........ содержит», но я только создающие ошибки. Может кто-нибудь мне немного рассказать, как решить эту проблему?

Спасибо :-)

UPDATE: я теперь использовать этот код:

Private Sub DataGridView1_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting 

    If DataGridView1.Rows.Count > 0 Then 

     If e.ColumnIndex = 2 Then 
      Dim LINK = DataGridView1.Rows(e.RowIndex).Cells(0).Value 
      If LINK.ToString.Contains("test.nl") Then 

       DataGridView1.Rows(e.RowIndex).Cells(5).Value = PictureBox1.Image 
      End If 

     End If 

    End If 

End Sub 

, кажется, работает, но когда я использую этот код ничего не меняется с изображениями:

Private Sub DataGridView1_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting 

    If DataGridView1.Rows.Count > 0 Then 

     If e.ColumnIndex = 2 Then 
      Dim LINK = DataGridView1.Rows(e.RowIndex).Cells(0).Value 
      If LINK.ToString.Contains("test.nl") Then 

       DataGridView1.Rows(e.RowIndex).Cells(5).Value = PictureBox1.Image 
      End If 
      If LINK.ToString.Contains("test.com") Then 

       DataGridView1.Rows(e.RowIndex).Cells(5).Value = PictureBox2.Image 
      End If 
     End If 

    End If 

End Sub 

все изображения одинаковы ... все они используют pictureboximage2. Я предполагаю, что я делаю что-то неправильно, но похоже, что я на правильном пути. Ударь меня с советами или фрагментах, если вы хотите, спасибо :-)

+0

Не имеет значения, каковы типы столбцов, если вы хотите установить значение в одном столбце на основе другого столбца, тогда вы обрабатываете событие CellValueChanged для сетки, обнаруживаете изменение в исходный столбец, а затем установите значение в столбце назначения той же строки. – jmcilhinney

+0

Вы загружаете со стола? – Codexer

+0

@jmcilhinney отлично, теперь мне просто нужно выяснить, как и какой код использовать в событии CellValueChanged ;-) – Maarten

ответ

0

в

DataGridView1.CellFormatting

использовать это:

If DataGridView1.Rows.Count > 0 Then 


     Dim LINK = DataGridView1.Rows(e.RowIndex).Cells(0).Value 
     If LINK.ToString.Contains("test.nl") Then 

      DataGridView1.Rows(e.RowIndex).Cells(5).Value = PictureBox1.Image 
     End If 

     If LINK.ToString.Contains("test.com") Then 

      DataGridView1.Rows(e.RowIndex).Cells(5).Value = PictureBox2.Image 
     End If 

    End If 

Пожалуйста, ударил меня, когда вы см. проблему в моем коде. Спасибо всем :-)

Смежные вопросы