0

現在、私のアプリケーションは6つの画像ボックスを表示し、それぞれが絶えず更新されている画像を表示しています。

ここで、画像ボックスをクリックすると、その画像ボックスが拡張され、選択した画像ボックスだけが表示されて画面全体に表示されます。

これは可能ですか?これを行うには、別のフォームを作成する必要がありますか?

よろしくお願いします、Perumal

4

3 に答える 3

2

各画像ボックスの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;
}
于 2012-05-30T11:50:45.663 に答える
2

コードが表示されない場合は、クリック時に画像ボックスをプログラムで変更する方法を次に示します。

pictureBox1.Dock = DockStyle.Fill

したがって、クリック時のイベントハンドラーを作成し、上記のように画像ボックスのDock関数を呼び出す必要があります。

コメントに応じて更新

DockStyle.None画像を元のサイズに戻すためのがあります。

私があなたを正しく理解しているなら、あなたは6枚の写真が欲しいです、そしてそれから1つをクリックするとそれは塗りつぶされます、もう一度クリックし、縮小し、別のものをクリックし、塗りつぶしなど...

これを行うには、画像ボックスのDockプロパティとVisibleプロパティを使用します。今では、実際にコードを書く方法を尋ねているようにも見えます。さて、あなたがいくつかのコードを見せれば、私がそれに近づく方法で何もすることなく、私はポインターを与えることができます:

  1. すべての画像ボックスをリストに入れて、それらに状態を割り当てBigますSmall

  2. クリックされた画像ボックスの状態を変更するには、画像ボックスごとにOnClickを記述します。

  3. 次に、各OnClickは、リスト内の各画像ボックスを反復処理し、小さい画像ボックスとDockStyleを非表示にするヘルパー関数を呼び出します。大きい画像ボックスに入力します。

上記のアルゴリズムはあなたが必要とすることを達成しますか?

于 2012-05-30T06:36:57.083 に答える
-1

このようなことを試してください。コードはリファクタリングされていませんが、それは可能だと確信しています

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;
            }
于 2012-05-30T07:06:01.490 に答える