![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
言語:Microsoft Visual Studio 2008
データベース:SQL Server 2005 非接続型のデータアクセスです。
現在,上記環境で.netを勉強し始めたところです。
そこでDataGridViewに画像を表示するプログラムを作成したいのですが、うまくいきません。
色々調べたのですが思うようにいかないので,アドバイスをいただければと思います。
<テーブル>
ID 画像
1 C\aaa.jpg
2 C\bbb.jpg
3 C\ccc.jpg
<画像がない時に表示する画像>
C\null.gif
自作したコードは下記の通りです。でもこれだと"null.gif"がセルに表示されるだけで、データ毎に
持っている画像を表示できません。コーディングがそうなので仕方がないのですが…
レコード毎に画像を表示する方法を教えて下さい。
Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim strsql As String
Call DBConnect() '---DB接続
strsql = "SELECT ID, 画像 FROM テーブル ORDER BY ID"
Dim comm As SqlCommand = New SqlCommand(strsql, Con)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim ds As DataSet = New DataSet()
dataadapter.Fill(ds, "テーブル")
dgrview.DataSource = ds
dgrview.DataMember = "テーブル"
'******************************
'DataGridViewの列に画像を表示する
'******************************
Dim ImageColumn As New DataGridViewImageColumn()
ImageColumn.Name = "Image"
ImageColumn.ValuesAreIcons = False
ImageColumn.Image = New Bitmap("C\null.gif")
ImageColumn.ImageLayout = DataGridViewImageCellLayout.Zoom
ImageColumn.Description = "イメージ"
dgrview.Columns.Add(ImageColumn)
Call Disconnect() '---DB切断
End Sub
No.1ベストアンサー
- 回答日時:
DataGridViewのCellFormattingイベントにて
if e.ColumnIndex = 1 then
' 画像カラム
' データセットのテーブルを取得
dim tbl as DataTable = CType(CType(dgrview.DataSource,BindingSource) _
.DataSource, DataSet).Tables("テーブル")
' 表示する行を取得
dim row as DataRow = tbl.rows( e.RowIndex )
try
' イメージの取得 or 設置
dim bmp as Bitmap = Bitmap.FromFile( row("Image") )
e.Value = bmp
catch ex as Exception
end try
end if
といった具合にコードで画像を張ってやる必要があるでしょう
この回答への補足
お返事ありがとうございます。下記のようにプログラムを修正したのですが、エラーが発生してしまいます。
これはどう対処すればよろしいでしょうか?
<エラー内容>
型 'System.Data.DataSet' のオブジェクトを型 'System.Windows.Forms.BindingSource' にキャストできません。
'//CellFormattingイベントハンドラ
Private Sub dgrview_CellFormatting(ByVal sender As Object, _
ByVal e As DataGridViewCellFormattingEventArgs) _
Handles dgrview.CellFormatting
If e.ColumnIndex = 1 Then
' 画像カラム
' データセットのテーブルを取得
Dim tbl As DataTable = CType(CType(dgrview.DataSource, BindingSource).DataSource, DataSet).Tables("テーブル") ←ここでエラー発生
' 表示する行を取得
Dim row As DataRow = tbl.Rows(e.RowIndex)
Try
' イメージの取得 or 設置
Dim bmp As Bitmap = Bitmap.FromFile(row("Image"))
e.Value = bmp
Catch ex As Exception
End Try
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルのエクスポートでソ...
-
VBとアクセスでSQL文に変...
-
DataGridViewに複数テーブルの...
-
VB.NETでのAccessテーブルリンク
-
COBOLのINVALID KEYが理解でき...
-
VB.NET データセットとADOレコ...
-
『列名 '担当者CD' があいま...
-
Accessのフォームでリス...
-
Accessで別mdbのテーブルをコピー
-
ACCESSのテーブル名をリストに...
-
.net 複数の主キーを設定する方法
-
同一セッションIDのブラウザを...
-
AccessからExcelへエクスポート...
-
手動または分散トランザクショ...
-
MDBテーブルへの追加変更を教え...
-
HTMLのテーブルの行数が多くな...
-
アクセステーブル、リンクとロ...
-
他のMDBのテーブルに追加したい
-
DataGridViewに画像を表示する方法
-
パイソンでのプログラミングに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBとアクセスでSQL文に変...
-
WORD VBA プログラム修正をお願...
-
Accessで別mdbのテーブルをコピー
-
『列名 '担当者CD' があいま...
-
DataGridViewに複数テーブルの...
-
他のMDBのテーブルに追加したい
-
エクセルのテーブルを解除する...
-
Excel複数シートをaccessへ一括...
-
手動または分散トランザクショ...
-
SQLを発行とは?クエリの作成と...
-
AccessからExcelへエクスポート...
-
CSVファイルのエクスポートでソ...
-
ACCESS2010 実行時エラー 2766
-
HTMLのテーブルの行数が多くな...
-
ExcelVBAからAccessMDB内のテー...
-
【ADO】「Execute」を使うと...
-
★クリスタルレポートの元になる...
-
DataGridの中身をDataSetにテー...
-
ACCESSのテーブル名をリストに...
-
COBOLのINVALID KEYが理解でき...
おすすめ情報