Compartilhar via


Fontes internacionais nos Windows Forms e controles

Em aplicativos internacionais, o método recomendado de seleção de fontes é usar substituição de fonte sempre que possível. Substituição de fonte significa que o sistema determina a qual script o caractere pertence.

Usando substituição de fonte

Para aproveitar esse recurso, não defina a propriedade Font para seu formulário ou qualquer outro elemento. O aplicativo usará automaticamente a fonte do sistema padrão, que difere de um idioma localizado do sistema operacional para outro. Quando o aplicativo for executado, o sistema fornecerá automaticamente a fonte correta para a cultura selecionada no sistema operacional.

Há uma exceção à regra de não definir a fonte, que é para alterar o estilo da fonte. Isso pode ser importante para um aplicativo no qual o usuário clica em um botão para fazer o texto em uma caixa de texto aparecer em negrito. Para fazer isso, você escreveria uma função para alterar o estilo de fonte da caixa de texto para negrito, com base em qualquer fonte do formulário. É importante chamar essa função em dois lugares: no manipulador de eventos Click do botão e no manipulador de eventos FontChanged. Se a função for chamada apenas no manipulador de eventos Click e alguma outra parte do código alterar a família de fontes de todo o formulário, a caixa de texto não será alterada com o restante do formulário.

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();
   }
}

No entanto, quando você localiza seu aplicativo, a fonte em negrito pode ser exibida mal para determinados idiomas. Se isso for uma preocupação, você deseja que os localizadores tenham a opção de alternar a fonte de negrito para texto regular. Como os localizadores normalmente não são desenvolvedores e não têm acesso ao código-fonte, somente aos arquivos de recurso, essa opção precisa ser definida nos arquivos de recurso. Para fazer isso, você definiria a propriedade Bold como true. Isso resulta na configuração da fonte sendo gravada nos arquivos de recurso, em que os localizadores podem editá-la. Em seguida, você escreve código após o método InitializeComponent para redefinir a fonte com base em qualquer fonte do formulário, mas usando o estilo de fonte especificado no arquivo de recurso.

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

Consulte também