dポイントプレゼントキャンペーン実施中!

C#でForm内にDBに登録されている画像ファイルを指定された数だけ表示させるプレビュー機能の作成方法を探っています。

<画面レイアウト>プレビュー表示
----------------------------------
コード1234:○○関連一覧

画像No.1
登録日9999/99/99 更新日9999/99/99
┏━━━━━━━━━━┓
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┗━━━━━━━━━━┛

画像No.2
登録日9999/99/99 更新日9999/99/99
┏━━━━━━━━━━┓
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┗━━━━━━━━━━┛

画像No.3
登録日9999/99/99 更新日9999/99/99
┏━━━━━━━━━━┓
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┗━━━━━━━━━━┛



画像No.i
登録日9999/99/99 更新日9999/99/99
┏━━━━━━━━━━┓
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┃画像 画像 画像 画像┃
┗━━━━━━━━━━┛




[閉じる]
-----------------------------------

Formは初期値800×600を指定し、これを超える場合はスクロールバーを表示させる。
画像No.はコード(1234、5678など)によって3つの場合、5つの場合など変動する数が登録されてます。

Webベース(ブラウザ使用)で開発すれば、テーブルタグを駆使してfor文を使うことで解決可能ですが、
あくまでもFormを使用した方法がありますか?
画像番号をComboBoxで指定して1画像だけ表示させる手法はできていますが、
なんとかして一覧で表示させたいと思っております。

よろしくお願いします。

A 回答 (2件)

現在使用しているコードがあるなら支障のない範囲で公開してみるのもひとつの方法ですよ



ユーザーコントールにラベルx3、ピクチャーボックスx1を張り付けた物を作成します

FormのAutoScrollをTrueにして
データベースから取得した数分のユーザーコントロールを並べてやればいいように思います

for( n = 0; n < nLen; n++ ) {
  UserControl1 oCtl = new oCtl;
  oCtl.ImageNo = n + 1;
  oCtl.Date1 = 登録日;
  oCtl.Date2 = 更新日;
  oCtl.Image = 画像;
  oCtl.Location = new Point( 8, n * ( oCtl.Height + 8 ) );
  this.Controls.Add( oCtl );
}
といった具合です
UserControl1 登録日、更新日、画像などは適宜修正しましょう

直接フォームに追加するほかにPanelを貼っておいてこちらに追加する方法でもいいでしょう
その場合
  panel1.Controls.Add( oCtl );
などといった具合に修正しましょう

別のデータを表示する際には最初に
for( n = Controls.Count -1; n > 0; n-- )
{
  Control ctl = Controls[n];
  if ( ctl.GetTYpe().Name == "UserControl1" )
  {
    Controls.Remove( ctl );
  }
}
といった具合に削除してから追加しましょう
    • good
    • 0
この回答へのお礼

無事繰り返し表示できました。
ありがとうございました。

お礼日時:2009/02/09 23:57

こんばんわぁ、Blackwinglsです。



PictureBoxを必要分作って配置したいって事ですか?

private System.Windows.Forms.PictureBox[] testPicureBox;
private void Form1_Load(object sender, EventArgs e)
{
this.testPicureBox = new System.Windows.Forms.PictureBox[5];

for (int i = 0; i < 5; i++)
{
this.testPicureBox[i] = new System.Windows.Forms.PictureBox();

this.testPicureBox[i].Size = new Size(100, 100);
this.testPicureBox[i].Location = new Point(0, i * 100);
this.testPicureBox[i].Image = Image.FromFile(@"C:\Documents and Settings\hogehoge\My Documents\My Pictures\01.gif");

this.Controls.Add(testPicureBox[i]);
}

って感じのとこですか?


ではでは~☆
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!