Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In den Windows-Betriebssystemen kann ein Benutzer die systemweiten Schriftarteinstellungen ändern, damit die Standardschriftart größer oder kleiner angezeigt wird. Das Ändern dieser Schriftarteinstellungen ist für Benutzer wichtig, die sehbehindert sind und einen größeren Typ benötigen, um den Text auf ihren Bildschirmen zu lesen. Sie können Ihre Windows Forms-Anwendung so anpassen, dass sie auf diese Änderungen reagiert, indem Sie die Größe des Formulars und den gesamten enthaltenen Text erhöhen oder verringern, wenn sich das Schriftartenschema ändert. Wenn Ihr Formular Änderungen an Schriftgraden dynamisch übernehmen soll, können Sie Ihrem Formular Code hinzufügen.
In der Regel ist die von Windows Forms verwendete Standardschriftart die Schriftart, die Microsoft.Win32 vom Namespaceaufruf GetStockObject(DEFAULT_GUI_FONT)zurückgegeben wird. Die von diesem Aufruf zurückgegebene Schriftart ändert sich nur, wenn sich die Bildschirmauflösung ändert. Wie im folgenden Verfahren gezeigt, muss Ihr Code die Standardschriftart so ändern, dass auf Änderungen des Schriftgrads reagiert wird, indem IconTitleFont verwendet wird.
So verwenden Sie die Desktopschriftart und reagieren auf Schriftartenschemaänderungen
Erstellen Sie Ihr Formular, und fügen Sie die gewünschten Steuerelemente hinzu. Weitere Informationen finden Sie unter So erstellen Sie eine Windows Forms-Anwendung über die Befehlszeile und Steuerelemente für Windows Forms.
Fügen Sie Ihrem Code einen Verweis auf den Microsoft.Win32 namespace hinzu.
using Microsoft.Win32;Imports Microsoft.Win32Fügen Sie dem Konstruktor Ihres Formulars den folgenden Code hinzu, um erforderliche Ereignishandler zu verbinden und die standardschriftart zu ändern, die für das Formular verwendet wird.
this.Font = SystemFonts.IconTitleFont; SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged); this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);Public Sub New() ' This call is required by the Windows Form Designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. AddHandler SystemEvents.UserPreferenceChanged, New UserPreferenceChangedEventHandler(AddressOf SystemEvents_UserPreferenceChangesEventHandler) End SubImplementieren Sie einen Handler für das UserPreferenceChanged Ereignis, der bewirkt, dass das Formular automatisch skaliert wird, wenn sich die Window Kategorie ändert.
void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e) { if (e.Category == UserPreferenceCategory.Window) { this.Font = SystemFonts.IconTitleFont; } }Private Sub SystemEvents_UserPreferenceChangesEventHandler(ByVal sender As Object, ByVal e As UserPreferenceChangedEventArgs) If (e.Category = UserPreferenceCategory.Window) Then Me.Font = SystemFonts.IconTitleFont End If End SubImplementieren Sie schließlich einen Handler für das FormClosing Ereignis, der den UserPreferenceChanged Handler entkoppelt.
Von Bedeutung
Wenn Sie diesen Code nicht einschließen, wird die Anwendung nicht in den Arbeitsspeicher fallen.
void Form1_FormClosing(object sender, FormClosingEventArgs e) { SystemEvents.UserPreferenceChanged -= new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged); }Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing RemoveHandler SystemEvents.UserPreferenceChanged, New UserPreferenceChangedEventHandler(AddressOf SystemEvents_UserPreferenceChangesEventHandler) End SubKompilieren sie den Code, und führen Sie den Code aus.
So ändern Sie das Schriftartenschema in Windows XP manuell
Während Die Windows Forms-Anwendung ausgeführt wird, klicken Sie mit der rechten Maustaste auf den Windows-Desktop, und wählen Sie im Kontextmenü "Eigenschaften " aus.
Klicken Sie im Dialogfeld "Eigenschaften anzeigen " auf die Registerkarte " Darstellung ".
Wählen Sie im Dropdown-Listenfeld "Schriftgrad " einen neuen Schriftgrad aus.
Sie werden feststellen, dass das Formular jetzt auf Laufzeitänderungen im Desktopschriftartschema reagiert. Wenn der Benutzer zwischen "Normal", " Große Schriftarten" und " Extra Large Fonts" wechselt, ändert das Formular die Schriftart und skaliert ordnungsgemäß.
Beispiel
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
namespace WinFormsAutoScaling
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Font = SystemFonts.IconTitleFont;
SystemEvents.UserPreferenceChanged += new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged);
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}
void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
{
if (e.Category == UserPreferenceCategory.Window)
{
this.Font = SystemFonts.IconTitleFont;
}
}
void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
SystemEvents.UserPreferenceChanged -= new UserPreferenceChangedEventHandler(SystemEvents_UserPreferenceChanged);
}
}
}
Imports Microsoft.Win32
Public Class Form1
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
AddHandler SystemEvents.UserPreferenceChanged, New UserPreferenceChangedEventHandler(AddressOf SystemEvents_UserPreferenceChangesEventHandler)
End Sub
Private Sub SystemEvents_UserPreferenceChangesEventHandler(ByVal sender As Object, ByVal e As UserPreferenceChangedEventArgs)
If (e.Category = UserPreferenceCategory.Window) Then
Me.Font = SystemFonts.IconTitleFont
End If
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
RemoveHandler SystemEvents.UserPreferenceChanged, New UserPreferenceChangedEventHandler(AddressOf SystemEvents_UserPreferenceChangesEventHandler)
End Sub
End Class
Der Konstruktor in diesem Codebeispiel enthält einen Aufruf von InitializeComponent, der definiert wird, wenn Sie ein neues Windows Forms-Projekt in Visual Studio erstellen. Entfernen Sie diese Codezeile, wenn Sie Ihre Anwendung in der Befehlszeile erstellen.
Siehe auch
.NET Desktop feedback