2012-05-30 2 views
0

현재 내 응용 프로그램은 6 개의 그림 상자를 표시하며 각 그림 상자는 지속적으로 업데이트되는 그림을 표시합니다.Picturebox를 다른 양식으로 확장하는 방법은 무엇입니까?

이제 그림 상자가 확장 된 그림 상자를 클릭하고 선택한 그림 상자를 표시하는 전체 화면을 채우고 싶습니다.

이것이 가능합니까? 이 일을 위해 다른 양식을 만들어야합니까? 사전에

감사합니다, Perumal

+0

WPF, 윈폼? –

+0

WinForms를 사용하는 데스크톱 용입니다. – perumal316

답변

2

(그들이 할 수있는이 같은 방법으로 모든 점)

picturebox_Click(object sender .....) 
{ 
    PictureBox pb= (PictureBox)sender; 
    if (pb.dock==DockStyle.None) 
     { 
      pb.dock=DockStyle.Fill; 
      pb.BringToFront(); 
     } 
    else 
     pb.dock=DockStyle.None; 
} 
2

여기, 코드를 볼 수 없음은 프로그래밍 클릭에 그림 상자를 변경하는 방법입니다.

pictureBox1.Dock = DockStyle.Fill 

따라서 클릭 이벤트 처리기를 만들고 위 그림과 같이 도크 기능을 호출해야합니다. 의견

에 응답

업데이트는 다시 이미지를 원래 크기로 되돌릴 수있는 DockStyle.None 있습니다. 또 다른 하나를 클릭 커지고 줄어 듭니다, 내가 제대로 이해하면

, 당신은 6 개 사진을 갖고 싶어하고 때 다시 클릭, 그것은 채워 하나를 클릭 채우기 등 등 ...이 작업을 수행하려면 다음

, 당신은 것 그림 상자에서 Dock 및 Visible 속성을 사용하십시오. 이제는 마치 을 묻는 것처럼 실제로 코드를 작성하는 것 같습니다. 당신은 몇 가지 코드를 보여 글쎄, 내가 그것을 접근하려는 방법에 갈 아무것도, 포인터를 줄 수있는가하는 것입니다

  1. 그들에게 상태를 목록에있는 모든 그림 상자를 넣고 지정 Big 또는 Small.

  2. 클릭 한 그림 상자의 상태를 변경하려면 각 그림 상자마다 OnClick을 작성하십시오.

  3. 각 OnClick은 목록의 각 그림 상자를 반복하여 작은 표식과 DockStyle을 숨기는 도우미 함수를 호출합니다. 큰 그림을 채우십시오.

위의 알고리즘이 필요한 것을 달성합니까?

+0

안녕하세요, Joe하지만이 방법을 사용하면 화면이 가득 차지만 다른 이미지는 계속 표시됩니다. 다른 이미지는 계속 표시되며 선택한 이미지가 전체 화면을 채 웁니다. 선택한 이미지 만 표시하고 화면을 채우려면 어떻게합니까? – perumal316

+0

그 중 6 개만 프로그램 적으로 숨길 수 있습니다.'picturebox2.Visible = false' – Joe

+0

@joe - 양식이 어떻게 보이는지 모르지만 어떻게 원래 화면으로 돌아갈 계획입니까? 귀하의 앱이 어떻게 생겼는지 생각해보십시오.양식에 6 개의 그림 상자가 있습니다. 그림 상자를 클릭하여 전체 양식을 덮어서 해당 그림 상자의 그림 만 표시되도록하십시오. 그러면 그림 상자 2를 클릭 할 수 있습니다. 어떻게 할 계획입니까? 나는 완전히 이해하지 못한다. 하지만 조금 더 많은 정보가 도움이 될 것입니다. –

-1

다음과 같이 시도해보십시오. 코드는 고려 다시하지 않습니다하지만 난 당신이 할 수있는 확신이 그림 상자 각 onclick 이벤트에

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; 
      } 
+0

. 무엇보다이 코드는 페이지와 페이지가 될 것입니다 ... – Joe

+0

그 이유는 코드가 다시 고려되지 않았다는 것입니다. 모든 이벤트 처리기의 기능이 동일하기 때문에이를 다른 메서드에 넣고 각 그림 상자의 이벤트 처리기에서 해당 메서드를 호출 할 수 있습니다. 코드로 범용 이벤트 핸들러를 생성 한 다음 모든 그림 상자에 할당함으로써 코드를 더욱 향상시킬 수 있습니다.이 경우 송신자를 메소드에 전달해야합니다. –

+0

하지만 모든 pictureBox_click에서 다른 모든 그림 상자의 표시 및 도크 스타일을 복사/붙여 넣기해야합니다. 기본적으로 n 개의 그림 상자, 즉 n * n 줄에 대해 동일한 작업을 n 번 작성해야합니다. 이벤트 핸들러는 각 그림 상자가 다른 모든 것을 보이지 않게하기 위해 알 필요가 있기 때문에 동일하지 않습니다. ** 모든 상자가 목록에 있으면 ** 쓰고 읽고 쓰는 것이 덜 어려울 것입니다 **. – Joe

관련 문제