Sie haben ein paar Dinge, die Sie benötigen/können Spur von hier behalten wollen:
• aktuelle Bildlaufposition
• Position des Gewindeelements (ich nehme an ein Textfeld), wenn sie es angezapft
Beachten Sie, dass das EnabledChanged -Ereignis für das InputPanel ziemlich einfach zu handhaben ist (ich nehme an, Sie haben es bereits getan): Überprüfen Sie den Enabled-Zustand des InputPanels und machen Sie ein + = oder - = auf die TabControl-Höhe, so dass das InputPanel nicht bedecke etwas.
Mein Verständnis ist, dass Ihr Problem ist, um festzustellen, wo die Textbox war, weil Ihr Worst-Case-Szenario ist, dass es aus dem Bildschirm verschoben wird, wenn die Tab-Control-Größe ändert.
Ich glaube (nicht 100% sicher), dass die Größenänderung eines Tabcontrols den oberen Rand des Tabcontrol-Inhalts sichtbar macht und Sie müssen nach unten scrollen, um alles zu sehen, was jetzt vom InputPanel "abgedeckt" wird.
Was Sie im EnabledChanged-Ereignis tun sollten, ist die Position des Steuerelements, das angetippt wurde (oder die Bildschirmkoordinate, die angetippt wurde - was für Sie am einfachsten ist). Wenn es in die Gefahrenzone von (ClientSize.Height-InputPanel.Bounds.Height, ClientSize.Height) fällt, müssen Sie Ihren Bildlauf anpassen.
Dies ist Halb C# -die Hälfte-Pseudo-Code, aber Sie sollten sehen können, wo ich mit ihm gehen:
int yOffset = top Y-Koordinate der angezapften Kontrolle;
if (yOffset> ClientSize.Height-inputPanel.Bounds.Height)
{
int yshift = Menge alles zum Hochschalten;
Punkt scrollPosition = AutoScrollPosition;
scrollPosition.Y = scrollPosition.Y - yShift;
AutoScrollPosition = scrollPosition;
}
Was dies bedeutet, kurz gesagt, wird überprüft, ob Ihr Inputpanel wird die gewünschte Steuerung zu verschleiern, und wenn ja, blättern Sie durch yshift Pixel, wo yshift könnte die gesamte Höhe des Inputpanel sein, oder gerade genug, um deine Kontrolle zu zeigen (was auch immer du willst).
• .NET CF scheint sehr verzeihend über das Festlegen ungültiger Scroll-Regeln. Wenn Sie nur 10 Pixel nach oben scrollen können und Sie sagen, dass Sie bis 100 nach oben scrollen müssen, wird es bei 10 stoppen.
• Die Bildschirmkoordinate (0,0) befindet sich oben links im sichtbaren Bildschirm - NICHT das angezeigte Formular. Sie können sich stolpern, wenn Sie annehmen, dass (0,0) der Anfang Ihres Formulars ist.