2011-05-15 2 views
1

많은 컨트롤이 내 폼에 있고, 사용자가 그 중 하나를 클릭하면 높이가 확장된다는 가정 해 봅시다. 즉, 현재이 클릭 컨트롤이 펼쳐지면 그 아래의 다른 컨트롤이 펼쳐진 컨트롤에 의해 겹쳐 표시됩니다.컨트롤이 다시 위치 할 때 폼의 내용 이동

하지만 내가 원하는 것은 확장 된 컨트롤 아래의 각 컨트롤이 아래로 슬라이드하여 확장 된 컨트롤 아래에 있다는 것입니다.

나는 슬라이딩을 처리하는 방법을 알고 있지만 주어진 컨트롤이 움직일 때마다 한 번의 이동을 제외한 모든 컨트롤을 만드는 방법을 알지 못합니다.

아무런 도움을 주시면 감사하겠습니다. 감사합니다.

void newOrderReceived(object sender, EventArgs e) 
{ 
    foreach(Control OrderNotificationBox in OrdersPanel.Controls) 
    { 
     if(OrderNotificationBox is NotificationBox) // Checks to see if the control is a NotificationBox 
     { 
      // Add my code to slide controls down. 
     } 
    } 
} 

하지만 ... 어떻게 컨트롤이 다음 확장 된 컨트롤인지 여부를 알 수 있습니까 :

이 내가 무슨 생각인가?

확장 된 컨트롤 아래에있는 모든 컨트롤의 위치를 ​​변경하려면 어떻게해야합니까?

편집 : 그냥 NotificationBox가 확장 NotificationBox 아래에 있는지 확인하기 위해 생각을했다, 아래의 수정 된 코드를 참조하십시오

void newOrderReceived(object sender, EventArgs e) 
{ 
    foreach(Control OrderNotificationBox in OrdersPanel.Controls) 
    { 
     if(OrderNotificationBox is NotificationBox) // Checks to see if the control is a NotificationBox 
     { 
      if(OrderNotificationBox.Location.Y <= ExpandedNotificationBox.Location.Y + ExpandedNotificationBox.Size.Width) 
      { 
       // Add my code to slide controls down. 
      } 
     } 
    } 
} 

을하지만이 충분하다? 현재이 방법이 효과적이기 때문에 방금 내 질문에 답변했습니다. 그러나, 이것을 할 수있는 더 좋은 방법은 없을까요? 더 우아하고 효율적인 방법?

여기 보이게하는 방법의 예입니다 : Expanded Control with properly re-located controls

+0

양식의 스크린 샷과 확장 된 컨트롤의 예를 제공 할 수 있습니까? –

+0

알렉스 –

+0

이미지 업로드, @Alex –

답변

2

FlowLayoutPanel 당신이 그것을과 모든 컨트롤이 자동으로 슬라이드 아래 모든 컨트롤의 크기를 조정할 수 있습니다 동적 레이아웃을 제공합니다. 흐름 레이아웃 패널의 그룹/열을 사용하여 전체 양식을 원하는 모양으로 만들 수있는 많은 전략이 있습니다. 일부 인터넷 검색은 이러한 정보를 일부 공개합니다. 단순히 button1을 제어 리사이징 상기 형태 예를 들어

enter image description here

는 폼 더 아래 모든 아래 컨트롤 흐른다. 디자인 타임에 시도해 볼 수도 있습니다. 폼을 플로우 레이아웃 패널에 드롭하고, 컨테이너에 3-4 컨트롤을 놓고 실험을 시작하십시오.

+0

안녕하세요. –

1

확장 가능한 각 컨텐츠 사용 패널.
패널을 다른 패널 아래에 고정시킵니다 (panel1.Dock = DockStyle.Top 사용). 맨 아래 패널의 경우 panel1.Dock = DockStyle.Fill을 사용하십시오.
확장 가능한 각 패널 내부에 하위 컨트롤을 배치하고 이에 따라 내부 컨트롤의 Anchor 속성을 설정합니다.
한 패널을 확장하면 나머지 패널이 자동으로 조정됩니다. 이를 코드화 할 필요는 없습니다. 현재 확장중인 패널의 Height 만 변경할 수 있습니다.

0

'ExplorerBar'기능이 필요합니다. 이를 제공하는 여러 제어 라이브러리가 있으며 무료로 제공하는 here on the CodeProject 문서를 발견했습니다.

관련 문제