2016-08-30 8 views
-1

Ich brauche Hilfe mit was ich einem Anbieter ein Formular in einer Anwendung entwickeln kann, die ich nicht die Quelle zu haben. Wir haben einen Fehler in einem ihrer großen WinForms gefunden. Wenn er in einer RDP-Sitzung bei 1024x768 geöffnet wird, sind die unteren 250px des Formulars, das ~ 1000px hoch ist, nicht erreichbar.Bildlaufleisten, wenn Formular größer als Bildschirm

Sie sind schwer zu sagen, dass es keine Lösung gibt, von der ich weiß, dass sie Unsinn ist, aber ich habe keine Visual Studio-Umgebung eingerichtet, um einen Proof of Concept zu erstellen, um sie selbst zu testen.

Von dem, was ich von anderen StackOverflow-Fragen und MSDN-Dokumentationsseiten unterscheiden kann, sollte das Problem wie folgt behoben werden: Das Formular wird automatisch auf die maximal darstellbare Höhe skaliert und dann mit einer vertikalen Bildlaufleiste versehen der Form. Wird das Folgende mein Ziel erreichen?

public MyTallForm() 
{ 
    InitializeComponent(); 
    this.AutoScroll = true 
    this.AutoSize = true 
} 
+0

Wer diese Frage abgelehnt hat, bitte erläutern Sie, warum ich das Problem lösen kann. Oder, wie es wahrscheinlicher ist, nicht. – bdx

+2

Ich habe nicht downvote, aber ich kann verstehen, warum jemand würde; Da praktisch keine Informationen über die Umsetzung des Formulars und seiner Kontrollen vorliegen, kann nicht mit Sicherheit gesagt werden, ob dies funktioniert oder welche Kombination oder Änderung erforderlich wäre. –

Antwort

3

AutoSize reagiert je nach Bedarf durch Züchten & Schrumpfen der Form in der Kontrollgruppe im Inneren der Form zu ändern.

AutoScroll reagiert auf Änderungen der Steuerelemente im Formular durch Anzeigen/Verbergen der Bildlaufleisten.

So wird AutoScroll nicht aktiviert, wenn AutoSize aktiv ist, da das Formular immer groß genug ist. Wenn das Problem von einer zu geringen Bildschirmauflösung ausgeht, sollten Sie AutoScroll verwenden.

Wenn das Formular zwischen RDP-Sitzungen offen gehalten, müssen Sie möglicherweise zu DisplaySettingsChanged zu beachten Auflösung Änderungen zu unterzeichnen, und entweder einfach Maximize (nicht sicher, ob es bereits maximiert ist, Makel zu Minimized und zurück zu vielleicht maximierten?) Oder Verwenden Sie GetWorkingArea, wenn Sie detaillierte Größe benötigen.

+0

Um zu verdeutlichen, sagst du, dass ich ihnen nur sagen muss, dass "this.AutoScroll = true" bei der Initialisierung, damit die Höhe des Formulars nicht größer als die verfügbare Auflösung des Bildschirms oder der RDP-Sitzung ist? Das Formular wird nicht zwischen den Sitzungen geöffnet bleiben, so dass es zumindest ein wenig vereinfacht. – bdx

+1

@bdx 'WindowState = FormWindowState.Maximized' und' AutoScroll = true' bei der Initialisierung "sollte" funktionieren, wenn die Steuerelemente ähnlich wie Microsoft-Steuerelemente funktionieren –

2

Set AutoScroll = True und AutoScaleMode to Dpi In Formulareigenschaften See attached image

Hoffe, es hilft.

Verwandte Themen