it-swarm.com.de

Automatische Größenänderung und Anpassung der Formularsteuerelemente bei Änderung der Auflösung

Ich habe bemerkt, dass einige Anwendungen ihre Steuerelementposition ändern, um sie so weit wie möglich in der Auflösung anzupassen. Wenn das Fenster maximiert ist, stellen sie sich so ein, dass sie über alle GUIs hinweg ausgeglichen aussehen Möglichkeit, diese Funktionalität in Visual Studio 2010 C # zu erstellen oder zu implementieren?

41
Afnan Bashir

Verwenden Sie Dock und Anker Eigenschaften. Hier ist ein guter Artikel. Beachten Sie, dass diese Änderungen beim Maximieren/Minimieren berücksichtigt werden. Das ist ein wenig anders, wenn sich die Bildschirmauflösung ändert, es wird jedoch dieselbe Idee verfolgt.

61
SwDevMan81

Verwenden Sie Kombinationen davon, um das gewünschte Ergebnis zu erhalten:

  1. Setzen Sie die Eigenschaft Anchor auf None, die Größe der Steuerelemente wird nicht geändert, sie verschieben nur ihre Position.

  2. Wenn Sie die Eigenschaft Anchor auf Oben + Unten + Links + Rechts setzen, wird die Größe der Steuerelemente geändert, ihre Position wird jedoch nicht geändert.

  3. Setzen Sie den Minimum Size des Formulars auf einen korrekten Wert.

  4. Legen Sie die Dock-Eigenschaft fest.

  5. Verwenden Sie das Form Resize-Ereignis, um das zu ändern, was Sie möchten

Ich weiß nicht, wie die Schriftgröße (Beschriftung, Textfeld, Kombinationsfeld usw.) in (1) - (4) beeinflusst wird, aber sie kann in (5) gesteuert werden.

18
Bhaskar
float widthRatio = Screen.PrimaryScreen.Bounds.Width / 1280;
float heightRatio = Screen.PrimaryScreen.Bounds.Height / 800f;
SizeF scale = new SizeF(widthRatio, heightRatio);
this.Scale(scale);
foreach (Control control in this.Controls)
{
control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio);
}
9

..und um eine Änderung der Auflösung zu erkennen (wenn Sie Docking and Anchoring verwenden, wie von SwDevMan81 vorgeschlagen), verwenden Sie das Ereignis SystemEvents.DisplaySettingsChanged in Microsoft.Win32 .

2

Hier verwende ich gerne https://www.netresize.net/index.php?c=3a&id=11#buyopt . Aber es ist eine kostenpflichtige Version.

Sie können ihre Quellcodes auch erhalten, wenn Sie 1 Site License (Unlimited Developers) kaufen.

Wie auch immer, ich finde die Nuget-Paketlösung.

0
Zin Min

fügen Sie im Formularladeereignis diese Zeile hinzu

this.WindowState = FormWindowState.Maximized;
0
soldiershin