2010-05-10 3 views
0

WinForms 및 C# 사용 :가시성 변경 후 패널 이동

나는 그룹 상자, 일부 체크 상자 및 텍스트 상자가있는 패널이 있습니다. 이 패널이 항상 표시되는 것은 아닙니다. 사용자 선택에 따라 패널을 표시합니다. 그러나 화면이 충분히 커서 화면 해상도에 따라 스크롤 막대가 필요합니다.

패널이 AutoScrollPosition을 기반으로 이동하는 이유를 아는 사람이 있습니까? 나는 그것이 왜 돌아서는지 알 수 없다. 코드의 어느 위치에서든 위치를 변경하지는 않습니다. 아래에 나열된 해결 방법을 발견했습니다. 그러나 그것이 일어나고있는 이유를 이해하는 것이 좋을 것입니다.

  if (m_PanelHoist.Location.Y != m_GroupBoxDrag.Location.Y) 
      { 
       Point point = m_PanelHoist.Location; 
       point.X += AutoScrollPosition.X; 
       point.Y += AutoScrollPosition.Y; 
       m_PanelHoist.Location = point; 
      } 

답변

1

this.AutoScrollPosition을 사용 중입니다. 그러면 패널이 양식에 의해 스크롤되고 있음을 알 수 있습니다. 이는 정상적으로, 양식 내의 모든 하위 컨트롤은 패널을 포함하여 스크롤 될 수 있습니다. 코드 스 니펫이이를 보완합니다.

설계 상.

+0

내가 따라 가지 않을 것 같니? 왜 오직 패널 만 스크롤되고 트리의 같은 레벨에있는 다른 그룹 상자 (및 다른 컨트롤)는 표시되지 않습니까? 컨트롤이 폼에 의해 스크롤되는지 여부를 결정하는 요소는 무엇입니까? – Billy

+0

부모 수는 컨트롤이 컨테이너의 Controls 컬렉션에 추가 될 때 설정됩니다. InitializeComponent() 메서드를 살펴보면 컨테이너가 어떤 컨트롤을 가지고 있는지 확인할 수 있습니다. 그룹 상자를 스크롤하지 못하게하는 것은 스크롤 막대가 다른 컨트롤에 의해 표시되는 경우에만 발생할 수 있습니다. 어쩌면 도킹 된 패널일까요? –

+0

좋아, 이제 마침내 이해할 것 같아. 읽고 더 연주 한 후에 나는 당신이 말하는 것을 보았습니다. 한스 도움에 감사드립니다! – Billy