2016-07-05 4 views
1

平和皆、datagridimagecolumnでこの問題を抱えています。特定の行にアップロードされたバイトイメージがない場合、xイメージを表示します。これは私が具体的に何を言及しているかを示す下のイメージです。だから、DataGridImageColumnのXイメージを空白イメージにするには? - VB.Net

、私は、ピクチャボックス上の画像を示す何の問題もない、しかし、私の問題は、[赤のX]画像です。空のイメージや空のイメージとしてはどうすればいいですか?

これは、自分のデータをデータベースからdatagridviewに表示するコードです。画像の列を自動的に伸ばしているコードで表示されます(多分役立つかもしれません)。

'------------REFRESH DISPLAY------------' 
Public Sub RefreshUser() 
    '------------CONNECTION DATABASE------------' 
    Dim connectionUser As New SqlConnection(_1LoginForm.connectionstring) 
    '------------QUERY------------' 
    sqlUser = "SELECT * FROM [1UserAccounts]" 
    '------------START CONNECTION------------' 
    connectionUser.Open() 
    '------------SQL------------' 
    sCommandUser = New SqlCommand(sqlUser, connectionUser) 
    sAdapterUser = New SqlDataAdapter(sCommandUser) 
    sBuilderUser = New SqlCommandBuilder(sAdapterUser) 
    sDsUser = New DataSet() 

    sAdapterUser.Fill(sDsUser, "User") 
    sTableUser = sDsUser.Tables("User") 

    '------------SET OF BINDING SOURCE------------' 
    Userbindingsource.DataSource = sDsUser.Tables("User") 

    '------------CLOSE CONNECTION------------' 
    connectionUser.Close() 

    '------------DATA BINDINGS------------' 
    DGVViewEditForm.DataSource = Userbindingsource 
    BNViewEditForm.BindingSource = Userbindingsource 


    TBUserAccountID.DataBindings.Clear() 
    TBUserCompanyID.DataBindings.Clear() 
    TBUserFullName.DataBindings.Clear() 
    TBUserName.DataBindings.Clear() 
    TBUserPassword.DataBindings.Clear() 
    TBUserRole.DataBindings.Clear() 

    '------------DATA BINDINGS ADDITION------------' 
    TBUserAccountID.DataBindings.Add("text", Userbindingsource, "UserAccountID") 
    TBUserCompanyID.DataBindings.Add("text", Userbindingsource, "UserCompanyID") 
    TBUserFullName.DataBindings.Add("text", Userbindingsource, "UserFullName") 
    TBUserName.DataBindings.Add("text", Userbindingsource, "UserName") 
    TBUserPassword.DataBindings.Add("text", Userbindingsource, "UserPassword") 
    TBUserRole.DataBindings.Add("text", Userbindingsource, "UserRole") 

    '------------DATA GRID VIEW SELECTION------------' 
    DGVViewEditForm.SelectionMode = DataGridViewSelectionMode.FullRowSelect 
    DGVViewEditForm.MultiSelect = False 


    '------------STRETCHES COLUMNS WITH IMAGES------------' 
    For i As Integer = 0 To DGVViewEditForm.ColumnCount - 1 
     If TypeOf DGVViewEditForm.Columns(i) Is DataGridViewImageColumn Then 
      DirectCast(DGVViewEditForm.Columns(i), DataGridViewImageColumn).ImageLayout = DataGridViewImageCellLayout.Stretch 

     End If 
    Next 

End Sub 

これは私の質問であり、誰かがこれを手伝ってくれることを願っています。前もって感謝します!

+0

「ブランク」の画像を投稿するイベントをフォーマットするセルを使用してください - それは、実際の画像 – Plutonix

+0

である必要がありますが、あなたはどのような種類のコード例を与えることができますか? –

答えて

1

CellFormattingイベントを処理して、別のイメージを仲介して提供することができます。完全に空白の外観の場合は、透明な背景である小さなPNG画像が必要になります。

が欠落している画像のプレースホルダ、および新しいユーザ行のプラス記号アイコンとして疑問符画像を提供する次のコードを直接防止する

' form level declarations: 
Private NewRowImage As Image 
Private NoImage As Image 
... 
' Assign them in the ctor or form load: 
NewRowImage = My.Resources.add 
NoImage = My.Resources.question 

いけないの使用は/ から画像を再利用します行ごとに新しいイメージオブジェクトが作成されます。 CellFormattingイベント:

' use your column index: 
If e.ColumnIndex = 5 Then 
    If dgv1.Rows(e.RowIndex).IsNewRow Then 
     e.Value = NewRowImage 
     e.FormattingApplied = True 
    ElseIf (e.Value Is Nothing) OrElse (DBNull.Value.Equals(e.Value)) Then 
     e.Value = NoImage 
     e.FormattingApplied = True 
    End If 
End If 

あなたはおそらく唯一のDBNullのためにテストする必要があり、何もテストは、念のためにあります。結果:

enter image description here

+0

私の質問にお答えいただきありがとうございます!これは私がこの問題について進歩するのを助けました。今私はエラーメッセージに取り組んでいます。 "System.FormatException:セルの書式設定された値が間違った型です。"ありがとうございました! –

+0

あなたが間違った列に画像を置いているような音や、あなたがイメージしていると思われるものは本当にisntです。 DataErrorイベントで利用可能な情報を調べます。 – Plutonix

+1

私のe.ColumnIndex = 5が間違っているはずです。この1つのプルトニックで私を助けてくれてありがとう! :) –

関連する問題