トップ回答者
DataTableの画像列をImageListに収めたい

質問
回答
-
諸農さま、ありがとうございます! 解決しました。MemoryStreamクラスというのがあるんですね。
コード載せるのって、こんな載せ方でいいかわかりませんが……
private void バインディングソースより読み込んでイメージリストにセット()
{
画像のBindingSource.MoveFirst();
for (int i = 0; i < 画像のBindingSource.Count; i++)
{
DataRowView dr=(DataRowView) 画像のBindingSource.Current;
int id=(int) dr[0];
byte[] bt=(byte[]) dr[画像の列番号];
MemoryStream st=new MemoryStream();
st.Write(bt, 0, (int) bt.Length);
Bitmap bmp = new Bitmap(st);
st.Close();
セット対象のimageList.Images.Add(bmp);
画像のBindingSource.MoveNext();
}
}データベースからのテーブルが、DataTableにあって、BindingSourceが設定されているとしての場合です。
すべての返信
-
諸農です。
イメージリストにどうしたいのかわかりませんが、イメージの取得方法でしたら以下のTipsからサンプルのダウンロードが出来ます。(サンプルはASP.NETでVBコードです)
http://www.microsoft.com/japan/msdn/asp.net/tips/DataBaseImage2/
-
諸農です。
VS2003時代のサンプル(HowTo)です。参考になると思います。
http://support.microsoft.com/default.aspx?scid=kb;ja;317701
どちらにしてもデータベースカラムから取得したバイト配列をストリームにコピーすることになると思います。
-
諸農さま、ありがとうございます! 解決しました。MemoryStreamクラスというのがあるんですね。
コード載せるのって、こんな載せ方でいいかわかりませんが……
private void バインディングソースより読み込んでイメージリストにセット()
{
画像のBindingSource.MoveFirst();
for (int i = 0; i < 画像のBindingSource.Count; i++)
{
DataRowView dr=(DataRowView) 画像のBindingSource.Current;
int id=(int) dr[0];
byte[] bt=(byte[]) dr[画像の列番号];
MemoryStream st=new MemoryStream();
st.Write(bt, 0, (int) bt.Length);
Bitmap bmp = new Bitmap(st);
st.Close();
セット対象のimageList.Images.Add(bmp);
画像のBindingSource.MoveNext();
}
}データベースからのテーブルが、DataTableにあって、BindingSourceが設定されているとしての場合です。