DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.net datagridviewのイメージ画像

環境/言語:[Win XP VB.NET2007 Express]
分類:[.NET]

こんばんは
初めて投稿させて頂きます。

VB.net datagridviewについて質問させて頂きます。

開発環境 VB.NET2007 express / WinXP

現在、datagridviewにイメージを挿入するところで困りはてています。
datatableから読み込んだdataをそのまま、datasourceに入れると
dataが縦に順序よく表示されますが、これを横に順序よく並べる方法に
ついてご教授お願いします。tipsのだと一列をイメージ列として定義する
方法に書いてあったと思われますが、1行をイメージ行に定義する方法が
わからず苦戦しています。

実際やりたいイメージを下に記載させて頂きます。


--------------------------------------------
|@データ目|Aデータ目|Bデータ目|Cデータ目|1行目(数値項目)
--------------------------------------------
|@データ目|Aデータ目|Bデータ目|Cデータ目|2行目(イメージのみ)
|イメージ図|イメージ図|イメージ図|イメージ図|
--------------------------------------------
|@データ目|Aデータ目|Bデータ目|Cデータ目|3行目(数値項目)
|数値項目|数値項目|数値項目|数値項目|
--------------------------------------------

図. 作成したいdatagridのイメージ

普通にadd指定で列を追加していくと、2行目で
1行目と型が違う為、起こられてしまいました。
単純にデータを挿入する方法があればご教授お願い致します。

また、対応策としてセル毎に背景画像をいじってみてるのですが
背景画像を、当ホームページのtips「オーナー描画 (DataGridViewのセルを自分で描画する 【別窓】 )」を参考にやってみましたが、Graphics.DrawImageで描画
したところセルの縦線にゴミ?ちらつき?が見えてしまいます。もしこちらの対処方法もよろしければお願い致します。


長々と色々質問させて頂きましたが
お付き合い頂ければ幸いです

よろしくお願い致します。
こんにちは。

セルを自分で描画するとゴミのようなものが見えるということですが、どのようなコードを書かれたのか、教えていただけますか?
以下に、参考にして記述したソースを記載します


以下に、参考にして記述したソースを記載します

'CellPaintingイベントハンドラ
-----------------------------------------------------------------
Private Sub DataGridView1_CellPainting(ByVal sender As Object, _
ByVal e As DataGridViewCellPaintingEventArgs) _
Handles DataGridView1.CellPainting

'1行目だけイメージに変換
If e.RowIndex = 0 Then

'背景だけを描画する
Dim backParts As DataGridViewPaintParts = _
e.PaintParts And (DataGridViewPaintParts.Background Or _
DataGridViewPaintParts.SelectionBackground)

e.Paint(e.ClipBounds, backParts)

'画像をセルの真ん中に描画する
Dim x As Integer = e.CellBounds.X + _
(e.CellBounds.Width - cellBackImage.Width) / 2
Dim y As Integer = e.CellBounds.Y + _
(e.CellBounds.Height - cellBackImage.Height) / 2
e.Graphics.DrawImage(cellBackImage, x, y)

'データは表示したくないので、中身無で描画

'描画が完了したことを知らせる
e.Handled = True
End If
End Sub
-----------------------------------------------------------------

上記のように記載すると、イメージの残像?っぽいのが
罫線にかさなってる?ように見えてしまいました。
'データは表示したくないので、中身無で描画

の部分ですが、最低でも境界線(DataGridViewPaintParts.Border)は描画した方が良いのではないでしょうか?
あ、完全に抜け落ちてました。
確かに、背景部分とかいてありましたが
あの中には色んな情報が含まれてるんですね。

その辺を修正したら、罫線とか選択したときの
状態とかがきれいになりました。
おさがわせしてすみませんでした。

ちなみに、最初の1個目の質問のほうですが
行に型の設定みたいなことはできるのでしょうか?
「行に型の設定」という意味はよくわからないのですが(セルにはValueTypeプロパティがあります)、MMさんがやりたい事は、

OutlookGrid: grouping and arranging items in Outlook style - CodeProject
http://www.codeproject.com/KB/grid/OutlookGrid.aspx

のようなことではないでしょうか?私はこのコードを見ていないのでどのようなことをしているのか分かりませんが、参考にならないでしょうか?
回答ありがとうございます

教えて頂いた先のものを少し解読してみたい
と思います。まだまだ勉強不足なものでm(__)m


とりあえず背景をいじってきれいにみせれてるので
一度クローズさせて頂きます

回答ありがとうございました。


■No26895に返信(管理人さんの記事)
> 「行に型の設定」という意味はよくわからないのですが(セルにはValueTypeプロパティがあります)、MMさんがやりたい事は、
>
> OutlookGrid: grouping and arranging items in Outlook style - CodeProject
> http://www.codeproject.com/KB/grid/OutlookGrid.aspx
>
> のようなことではないでしょうか?私はこのコードを見ていないのでどのようなことをしているのか分かりませんが、参考にならないでしょうか?
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板