tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: DataGridViewセルへ表示された画像のパス取得
投稿日: 2009/09/11(Fri) 09:47
投稿者魔界の仮面弁士
> 開発環境
> VS2005 C#
ここは、VB の掲示板ですよ。


> ListViewに表示された画像一覧から
> ドラッグ&ドロップでDataGridViewのセルに画像を貼り付けています。
DoDragDrop に渡すオブジェクトは、どのようなデータでしょうか。

画像パスの文字列ですか? Image 継承クラス? それともListViewItem クラス?
あるいは、独自に作成した構造体/クラスなのでしょうか?


> 貼り付ける前に画像をStreamしてBitMapオブジェクトにしています。
BitMap → Bitmap ですよね。(^^;
C# であるならば、大文字小文字の違いには気をつけないと。VB ならば許容できますが。


> Bitmap bmp = new ("画像フルパス")
そのような構文は使えないと思いますよ。

C# 2008 の開発段階で、その省略構文が検討された事もあったけれども、
最終的に var bmp = new Bitmap("画像フルパス"); 構文が採用されたはず…。


で。このコードを見る限り、『画像をStreamして』という処理が
見当たらないのですが、それはどこにあるのでしょうか?
もしかして、Bitmap(String) コンストラクタを呼び出しているのではなく、
Bitmap(Stream) コンストラクタを呼び出しているのでしょうか?
それとも順番が逆で、Bitmap を MemoryStream 等にシリアライズしているのでしょうか?


> string s = DataGridView[x],y].Value as string
これも、文法的におかしいです。


> セルに描画されたbmpのフルパスを、セルをクリックしたときに表示させるには
> どうすれば良いのか教えていただきたいです。
この場合のセルは、画像表示用の DataGridViewImageCell ですね?


Bitmap クラスには、元画像のパスが保存されていないので、今の作りでは無理ですが、
パスを一緒に保持しておけば、目的を果たせるかと思います。


<C#>
// 割り当て
Bitmap bmp = new Bitmap(bitmapPath);
bmp.Tag = bitmapPath;
dataGridView1[x, y].Value = bmp;

// 取り出し
Bitmap bmp = dataGridView1[x, y].Value as Bitmap;
lable1.Text = (bmp != null) ? bmp.Tag as string : string.Empty;


<VB>
' 割り当て
Dim bmp As New Bitmap(bitmapPath)
bmp.Tag = bitmapPath
DataGridView1(x, y).Value = bmp

' 取り出し
Dim bmp As Bitmap = TryCast(DataGridView1(x, y).Value, Bitmap)
If bmp Is Nothing Then
    Lable1.Text = ""
Else
    Label1.Text = CStr(bmp.Tag)
End If

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。