Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nos sistemas operacionais Windows, um usuário pode alterar as configurações de fonte em todo o sistema para fazer com que a fonte padrão pareça maior ou menor. A alteração dessas configurações de fonte é fundamental para os usuários com deficiência visual e exigem um tipo maior para ler o texto em suas telas. Você pode ajustar seu aplicativo do Windows Forms para reagir a essas alterações aumentando ou diminuindo o tamanho do formulário e todo o texto contido sempre que o esquema de fontes for alterado. Se você quiser que seu formulário acomode as alterações em tamanhos de fonte dinamicamente, você pode adicionar código ao seu formulário.
Normalmente, a fonte padrão usada pelos Windows Forms é a fonte retornada pela chamada de Microsoft.Win32 namespace para GetStockObject(DEFAULT_GUI_FONT). A fonte retornada por essa chamada só é alterada quando a resolução da tela é alterada. Conforme mostrado no procedimento a seguir, seu código deve alterar a fonte padrão para IconTitleFont responder às alterações no tamanho da fonte.
Para usar a fonte da área de trabalho e responder às alterações do esquema de fontes
Crie seu formulário e adicione os controles que você deseja. Para obter mais informações, consulte Como criar um aplicativo do Windows Forms com base na linha de comando e controles a serem usados nos Windows Forms.
Adicione uma referência ao Microsoft.Win32 namespace ao seu código.
using Microsoft.Win32;Imports Microsoft.Win32Adicione o código a seguir ao construtor do formulário para conectar os manipuladores de eventos necessários e alterar a fonte padrão em uso para o formulário.
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 SubImplemente um manipulador do evento UserPreferenceChanged que faz com que o formulário seja dimensionado automaticamente quando a categoria Window for alterada.
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 SubPor fim, implemente um manipulador para o FormClosing evento que desanexe o UserPreferenceChanged manipulador de eventos.
Importante
A falha ao incluir esse código fará com que seu aplicativo vaze memória.
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 SubCompile e execute o código.
Para alterar manualmente o esquema de fontes no Windows XP
Enquanto seu aplicativo do Windows Forms está em execução, clique com o botão direito do mouse na área de trabalho do Windows e escolha Propriedades no menu de atalho.
Na caixa de diálogo Propriedades de Exibição , clique na guia Aparência .
Na caixa de listagem suspensa Tamanho da Fonte , selecione um novo tamanho de fonte.
Você observará que o formulário agora reage às alterações em tempo de execução no esquema de fontes da área de trabalho. Quando o usuário muda entre Fontes Normais, Grandes e Fontes Grandes Extras, o formulário altera a fonte e é dimensionado corretamente.
Exemplo
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
O construtor neste exemplo de código contém uma chamada para InitializeComponent, que é definida quando você cria um novo projeto do Windows Forms no Visual Studio. Remova essa linha de código se você estiver criando seu aplicativo na linha de comando.
Consulte também
.NET Desktop feedback