理想的には、1つの画像を隠してもう一方を表示するのではなく、バッファロジックを作成することです。イメージを表示する前に、イメージをロードするいくつかのバッファを用意し、イメージごとに新しいセットではなく、イメージを表示する固定数の実際のフィールドを持つ方がはるかに良いアイデアです。
解決方法が必要な場合は、カスタムユーザーコントロールを作成してみてください。
このような何か試してみてください:
public class customUserControl : UserControl
{
//Store image as a Uri rather than an Image
private Uri StoredImagePath;
public class PictureBoxAdv : PictureBox
{
public PictureBoxAdv()
{
this.VisibleChanged +=new EventHandler(VisibleChanged);
}
}
public Uri Image
{
get { return StoredImagePath; }
set
{
StoredImagePath = value;
if (this.Visible && StoredImagePath != null)
{
this.Image = Image.FromFile(StoredImagePath.AbsolutePath);
}
}
}
public void VisibleChanged(object sender, EventArgs e)
{
//When becomes visible, restore image, invisible, nullify.
if (this.Visible && StoredImagePath != null)
{
this.Image = Image.FromFile(StoredImagePath.AbsolutePath);
}
else
{
this.Image = null;
}
}
}
をだからあなたが何を意味するかである:目に見えるボックスのセット量を持っており、これらのボックスに表示される画像を変更しますか?私は現在、すべての画像ファイル名を持つリストを持っています。私は基本的にスクロールバーを取ることができ、最小/最大値を私は持っている画像の量に設定し、現在表示されている画像を交換することができます。私が理解していないことは、バッファロジックです、あなたはそれについて詳述できますか? – Splatbang
バッファリングロジックは単純で、Listオブジェクトにすべてのイメージを格納するだけで、特定のイメージを呼び出して別のイメージを置き換える場合は、単にimageBox1.Image = Image.FromFile(uiList [2] .AbsolutePath)を呼び出します。 現在の画像と交換するために追加の画像を使用することができます。これにより、バックグラウンドで画像を読み込むことができます。また、読み込んだ画像は置き換えたいPictureBoxに読み込むことができます。 –
Corylulu
ああ、それは基本的に私がとにかくやったことです。私は6つのグループボックスとスクロールバーをフォームに配置しました。すべての画像パスをリストに保存し、スクロールバーの値によって表示される画像が決まります。画像表示部は、別のスレッドで処理される。 助けてくれてありがとう! – Splatbang