2016-10-17 23 views
1

私はVB.NETを使用して、私のWindowsフォームでDataGridViewObjectを使っています。アイコンを表示する必要がある3つの列があります。しかし、行からの情報に基づいて、そのアイコンが表示されるかどうかはわかりません。私の問題は、その値を変更すると画像が変わらないことです。基本的に、私はこのように私の列を定義:データが満たされた後Datagridviewはセル内の画像を変更しません

Dim column1 As DataGridViewImageColumn = New DataGridViewImageColumn() 
column1.Image = My.Resources.image1 
column1.Width = 30 
dw.Columns.Add(column1) 

Dim column2 As DataGridViewImageColumn = New DataGridViewImageColumn() 
column2.Image = My.Resources.image2 
column2.Width = 30 
dw.Columns.Add(column2) 

Dim column3 As DataGridViewImageColumn = New DataGridViewImageColumn() 
column3.Image = My.Resources.image3 
column3.Width = 30 
dw.Columns.Add(column3) 

、私は行をループしています、と私はその行の画像を表示したくない場合は、私は:

Dim cell1 As DataGridViewImageCell = row.Cells(9) 
Dim cell2 As DataGridViewImageCell = row.Cells(10) 
Dim cell3 As DataGridViewImageCell = row.Cells(11) 

cell1.Value = Nothing 
cell2.Value = Nothing 
cell3.Value = Nothing 

しかし、私の画像はそのままです。私は何が欠けているのですか?

+0

DGVにバインドされていますか?あなたの*他の*問題はあなたのアプリが漏れているということです。 – Plutonix

+0

はい、データソースをDataTableに設定し、内容をdbからロードします。申し訳ありませんが、「アプリが漏れている」ということはどういう意味ですか? –

+0

イメージが編集から変更されますか?たとえば、ユーザーが行を「アクティブ」から「非アクティブ」に変更すると、変更されますか、または静的になりますか? (それは漏れているかもしれませんが、必要以上のリソースを消費しています)。 – Plutonix

答えて

2

あなたは、いくつかの未結合のDataGridViewImageColumnを使用していて、文書で述べたように、Imageプロパティは、列がデータバインドされていないときに値のないセルに表示された画像を指定します。

セル値をnullに設定すると、セルにImageプロパティが表示されます。

は、問題を解決するには:あなたの列の場合

  1. Imageプロパティを設定しないでください
  2. column.DefaultCellStyle.NullValue = Nothingを設定します。
  3. イメージを表示するたびに、Valueというセルのプロパティにイメージを割り当てます。

セルの値をループで手動で設定することも、CellFormattingイベントを使用して手動で設定することもできます。例:

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

    If (e.RowIndex >= 0 AndAlso e.ColumnIndex = 2) Then 
     If (e.RowIndex Mod 2 = 0) Then 'Use any criteria which you need, it's a test 
      e.Value = My.Resources.Image1 
     Else 
      e.Value = DBNull.Value 
      e.CellStyle.NullValue = Nothing 
     End If 
    End If 

    ' Do the same for other image columns. 

End Sub 
関連する問題