Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En los sistemas operativos Windows, un usuario puede cambiar la configuración de fuente de todo el sistema para que la fuente predeterminada aparezca más grande o más pequeña. Cambiar esta configuración de fuente es fundamental para los usuarios con discapacidades visuales y requieren un tipo mayor para leer el texto en sus pantallas. Puede ajustar la aplicación de Windows Forms para reaccionar a estos cambios aumentando o disminuyendo el tamaño del formulario y todo el texto contenido siempre que cambie la combinación de fuentes. Si desea que el formulario adapte los cambios en los tamaños de fuente dinámicamente, puede agregar código al formulario.
Normalmente, la fuente predeterminada usada por Windows Forms es la fuente devuelta por la Microsoft.Win32 llamada de espacio de nombres a GetStockObject(DEFAULT_GUI_FONT). La fuente devuelta por esta llamada solo cambia cuando cambia la resolución de pantalla. Como se muestra en el procedimiento siguiente, el código debe cambiar la fuente predeterminada a IconTitleFont para responder a los cambios en el tamaño de fuente.
Para usar la fuente de escritorio y responder a los cambios de la combinación de fuentes
Cree el formulario y agregue los controles que desee. Para obtener más información, vea Cómo: Crear una aplicación de Windows Forms desde la línea de comandos y Controles para usar en Windows Forms.
Agregue una referencia al Microsoft.Win32 espacio de nombres a su código.
using Microsoft.Win32;Imports Microsoft.Win32Agregue el código siguiente al constructor del formulario para enlazar controladores de eventos necesarios y cambiar la fuente predeterminada en uso para el formulario.
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 un controlador para el UserPreferenceChanged evento que hace que el formulario se escale automáticamente cuando cambia la Window categoría.
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 último, implemente un controlador para el FormClosing evento que desasocie el UserPreferenceChanged controlador de eventos.
Importante
Si no se incluye este código, la aplicación perderá memoria.
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 y ejecute el código.
Para cambiar manualmente la combinación de fuentes en Windows XP
Mientras se ejecuta la aplicación de Windows Forms, haga clic con el botón derecho en el escritorio de Windows y elija Propiedades en el menú contextual.
En el cuadro de diálogo Mostrar propiedades , haga clic en la pestaña Apariencia .
En el cuadro de lista desplegable Tamaño de fuente, seleccione un nuevo tamaño de fuente.
Notará que el formulario ahora reacciona a los cambios en tiempo de ejecución en el esquema de fuentes del escritorio. Cuando el usuario cambia entre Normal, Large Fonts y Extra Large Fonts, el formulario cambia la fuente y se escala correctamente.
Ejemplo
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
El constructor de este ejemplo de código contiene una llamada a InitializeComponent, que se define al crear un nuevo proyecto de Windows Forms en Visual Studio. Quite esta línea de código si va a compilar la aplicación en la línea de comandos.
Consulte también
.NET Desktop feedback