Compartir a través de


Fuentes internacionales en Windows Forms y controles

En las aplicaciones internacionales, el método recomendado para seleccionar fuentes es usar la recuperación de fuentes siempre que sea posible. La sustitución de fuentes significa que el sistema determina a qué sistema de escritura pertenece el carácter.

Uso de reserva de fuentes

Para aprovechar esta característica, no establezca la Font propiedad del formulario ni de ningún otro elemento. La aplicación usará automáticamente la fuente del sistema predeterminada, que difiere de un idioma localizado del sistema operativo a otro. Cuando se ejecuta la aplicación, el sistema proporcionará automáticamente la fuente correcta para la referencia cultural seleccionada en el sistema operativo.

Hay una excepción a la regla de no establecer la fuente, que es para cambiar el estilo de fuente. Esto puede ser importante para una aplicación en la que el usuario hace clic en un botón para que el texto de un cuadro de texto aparezca en negrita. Para ello, escribiría una función para cambiar el estilo de fuente del cuadro de texto a negrita, en función de la fuente del formulario. Es importante llamar a esta función en dos lugares: en el controlador de eventos del botón Click y en el controlador de eventos del FontChanged. Si solo se llama a la función en el Click controlador de eventos y algún otro fragmento de código cambia la familia de fuentes de todo el formulario, el cuadro de texto no cambia con el resto del formulario.

Private Sub MakeBold()
   ' Change the TextBox to a bold version of the form font
   TextBox1.Font = New Font(Me.Font, FontStyle.Bold)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   ' Clicking this button makes the TextBox bold
   MakeBold()
End Sub

Private Sub Form1_FontChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.FontChanged
   ' If the TextBox is already bold and the form's font changes,
   ' change the TextBox to a bold version of the new form font
   If (TextBox1.Font.Style = FontStyle.Bold) Then
      MakeBold()
   End If
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
   // Clicking this button makes the TextBox bold
   MakeBold();
}

private void MakeBold()
{
   // Change the TextBox to a bold version of the form's font
   textBox1.Font = new Font(this.Font, FontStyle.Bold);
}

private void Form1_FontChanged(object sender, System.EventArgs e)
{
   // If the TextBox is already bold and the form's font changes,
   // change the TextBox to a bold version of the new form font
   if (textBox1.Font.Style == FontStyle.Bold)
   {
      MakeBold();
   }
}

Sin embargo, al localizar la aplicación, la fuente en negrita puede mostrarse mal para determinados idiomas. Si esto es un problema, querría que los localizadores tuvieran la opción de cambiar la fuente de negrita a texto regular. Dado que los localizadores normalmente no son desarrolladores y no tienen acceso al código fuente, solo para los archivos de recursos, esta opción debe establecerse en los archivos de recursos. Para ello, establecería la Bold propiedad en true. Esto hace que la configuración de la fuente se escriba en los archivos de recursos, donde los localizadores pueden editarla. A continuación, escriba código después del InitializeComponent método para restablecer la fuente en función de la fuente del formulario, pero con el estilo de fuente especificado en el archivo de recursos.

TextBox1.Font = New System.Drawing.Font(Me.Font, TextBox1.Font.Style)
textBox1.Font = new System.Drawing.Font(this.Font, textBox1.Font.Style);

Consulte también