現在、私のアプリケーションは6つの画像ボックスを表示し、それぞれが絶えず更新されている画像を表示しています。
ここで、画像ボックスをクリックすると、その画像ボックスが拡張され、選択した画像ボックスだけが表示されて画面全体に表示されます。
これは可能ですか?これを行うには、別のフォームを作成する必要がありますか?
よろしくお願いします、Perumal
各画像ボックスのonclickイベントで(これらはすべてこの同じメソッドを指すことができます)
picturebox_Click(object sender .....)
{
PictureBox pb= (PictureBox)sender;
if (pb.dock==DockStyle.None)
{
pb.dock=DockStyle.Fill;
pb.BringToFront();
}
else
pb.dock=DockStyle.None;
}
コードが表示されない場合は、クリック時に画像ボックスをプログラムで変更する方法を次に示します。
pictureBox1.Dock = DockStyle.Fill
したがって、クリック時のイベントハンドラーを作成し、上記のように画像ボックスのDock関数を呼び出す必要があります。
コメントに応じて更新
DockStyle.None
画像を元のサイズに戻すためのがあります。
私があなたを正しく理解しているなら、あなたは6枚の写真が欲しいです、そしてそれから1つをクリックするとそれは塗りつぶされます、もう一度クリックし、縮小し、別のものをクリックし、塗りつぶしなど...
これを行うには、画像ボックスのDockプロパティとVisibleプロパティを使用します。今では、実際にコードを書く方法を尋ねているようにも見えます。さて、あなたがいくつかのコードを見せれば、私がそれに近づく方法で何もすることなく、私はポインターを与えることができます:
すべての画像ボックスをリストに入れて、それらに状態を割り当てBig
ますSmall
。
クリックされた画像ボックスの状態を変更するには、画像ボックスごとにOnClickを記述します。
次に、各OnClickは、リスト内の各画像ボックスを反復処理し、小さい画像ボックスとDockStyleを非表示にするヘルパー関数を呼び出します。大きい画像ボックスに入力します。
上記のアルゴリズムはあなたが必要とすることを達成しますか?
このようなことを試してください。コードはリファクタリングされていませんが、それは可能だと確信しています
private bool isfill = false;
private void pictureBox1_Click(object sender, EventArgs e)
{
if (!isfill)
{
pictureBox1.Dock = DockStyle.Fill;
pictureBox2.Visible = false;
isfill = true;
}
else
{
pictureBox1.Dock = DockStyle.None;
pictureBox2.Visible = true;
isfill = false;
}
}
private void pictureBox2_Click(object sender, EventArgs e)
{
if (!isfill)
{
pictureBox2.Dock = DockStyle.Fill;
isfill = true;
pictureBox1.Visible = false;
}
else
{
pictureBox2.Dock = DockStyle.None;
isfill = false;
pictureBox1.Visible = true;
}