당신은 당신이 필요 몇 가지가/여기를 추적 할 수 있습니다 :
• 현재 스크롤 위치
• 태핑 요소 (나는 텍스트 상자를 가정)가
그것을 도청 할 때의 위치
InputPanel에 대한 EnabledChanged 이벤트는 다루기가 매우 쉽습니다. (이미 해본 것으로 가정합니다.) InputPanel의 Enabled 상태를 확인하고 + 또는 =를 TabControl의 Height로 변경하여 InputPanel이 아닌지 확인하십시오 무엇이든 다 망라.
필자의 최우선 시나리오는 tabcontrol 크기가 조정될 때 화면 밖으로 이동된다는 것이므로 텍스트 상자의 위치를 확인하는 것이 문제입니다.
tabcontrol의 크기를 조정하면 tabcontrol 내용의 상단이 계속 보일 것이라고 생각합니다. 이제는 InputPanel에서 "덮어 쓴"내용을 보려면 아래로 스크롤해야합니다.
EnabledChanged 이벤트에서 수행하고자하는 것은 두드린 컨트롤의 위치 (또는 탭 된 화면 좌표 - 가장 쉬운 것이 무엇이든)입니다. 위험 영역 (ClientSize.Height-InputPanel.Bounds.Height, ClientSize.Height) 내에 있으면 스크롤을 조정해야합니다.
이 반 C# - 절반 - 의사하지만 당신은 내가 함께 갈거야 어디에서 볼 수 있어야합니다 :
INT yOffset = 상단 y 좌표를 탭 컨트롤의;
경우 (yOffset> ClientSize.Height-inputPanel.Bounds.Height)
{
INT yShift = 모든 업 시프트 량;
포인트 scrollPosition = AutoScrollPosition;
scrollPosition.Y = scrollPosition.Y - yShift;
AutoScrollPosition = scrollPosition;
}이 간단히 말해서, 무엇을
는, 검사는 InputPanel는 원하는 컨트롤을 은폐하려고, 그렇다면, yShift이 inputPanel의 전체 높이 수 있습니다 yShift 픽셀에 의해 스크롤되는 경우 또는 당신이 원하는대로 컨트롤을 간신히 보여주기에 충분합니다.
• .NET CF는 유효하지 않은 스크롤 규칙을 설정하는 것에 매우 관대합니다. 10 픽셀 위로 스크롤 할 수 있고 100까지 스크롤하도록 말하면 10에서 멈 춥니 다.
• 화면 좌표 (0,0)는 보이는 화면의 왼쪽 상단입니다 - 표시되는 양식이 아닙니다. 양식의 맨 위에 (0,0) 있다고 가정하면 문제가 발생할 수 있습니다.