Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I Windows-operativsystemen kan en användare ändra teckensnittsinställningarna för hela systemet så att standardteckensnittet visas som större eller mindre. Att ändra dessa teckensnittsinställningar är viktigt för användare som är synskadade och kräver större typ för att läsa texten på sina skärmar. Du kan justera ditt Windows Forms-program så att det reagerar på dessa ändringar genom att öka eller minska storleken på formuläret och all innesluten text när teckensnittsschemat ändras. Om du vill att formuläret ska hantera ändringar i teckenstorlekar dynamiskt kan du lägga till kod i formuläret.
Standardteckensnittet som används av Windows Forms är normalt teckensnittet som returneras av Microsoft.Win32 namnområdesanropet till GetStockObject(DEFAULT_GUI_FONT). Teckensnittet som returneras av det här anropet ändras bara när skärmupplösningen ändras. Som du ser i följande procedur måste koden ändra standardteckensnittet till IconTitleFont för att svara på ändringar i teckenstorleken.
Så här använder du skrivbordsteckensnittet och svarar på ändringar i teckensnittsschemat
Skapa formuläret och lägg till de kontroller som du vill använda. Mer information finns i Så här gör du: Skapa ett Windows Forms-program från kommandoraden och Kontroller att använda på Windows Forms.
Lägg till en referens till Microsoft.Win32 namnområdet i koden.
using Microsoft.Win32;Imports Microsoft.Win32Lägg till följande kod i konstruktorn i formuläret för att ansluta nödvändiga händelsehanterare och ändra standardteckensnittet som används för formuläret.
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 SubImplementera en hanterare för händelsen UserPreferenceChanged som gör att formuläret skalas automatiskt när Window kategori ändras.
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 SubImplementera slutligen en hanterare för FormClosing-händelsen som kopplar från UserPreferenceChanged-händelsehanteraren.
Viktigt!
Om den här koden inte inkluderas kommer programmet att läcka minne.
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 SubKompilera och kör koden.
Ändra teckensnittsschemat manuellt i Windows XP
När Windows Forms-programmet körs högerklickar du på Skrivbordet i Windows och väljer Egenskaper på snabbmenyn.
I dialogrutan Visningsegenskaper klickar du på fliken Utseende.
Välj en ny teckenstorlek i listrutan Teckenstorlek.
Du kommer att märka att formuläret nu reagerar på ändringar vid körning i skrivbordets teckensnittsschema. När användaren växlar mellan Normal, Stora teckensnittoch Extra stora teckensnittändras teckensnittet och skalas korrekt.
Exempel
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
Konstruktorn i det här kodexemplet innehåller ett anrop till InitializeComponent, som definieras när du skapar ett nytt Windows Forms-projekt i Visual Studio. Ta bort den här kodraden om du skapar programmet på kommandoraden.
Se även
.NET Desktop feedback