Suporte Bidirecional para Aplicativos de Formulários do Windows

Você pode usar o Visual Studio para criar aplicativos baseados no Windows que oferece suporte à línguas bidirecionais (direita para esquerta) como Arábico e Hebraico. Isto inclui forumlários padrões, caixas de diálogo, formulários MDI e todos os controles com que você pode trabalhar nestes formulários — isto é, todos os objetos no namespace Control.

Suporte a cultura

Configurações de cultura de de cultura da IU determinam como um aplicativo trabalha com datas, horas, moeda e outras informações. O supporte à cultura e cultura da IU para as linguagens bidirecionais é o mesmo que para qualquer outra linguagem. Para obter mais informações, consulte Classes específicas de cultura para Windows Forms e Web Forms Globais e Classes específicas de cultura para Windows Forms e Web Forms Globais e Classes específicas de cultura para Windows Forms e Web Forms Globais e Culture-Specific Classes for Global Windows Forms and Web Forms.

Propriedades RightToLeft e RightToLeftLayout

A classe de base Control, da qual os formulários derivam, inclui uma propriedade RightToLeft que você pode definir para mudar a ordem de leitura de um formulário e seus controles. Se você definir a propriedade RightToLeft do formulário, por padrão, os controles do formulário herdam a mesma. No entanto, você também pode definir a propriedade RightToLeft individualmente na maioria dos controles. Para obter mais informações, consulte Como: Exibir Direito - para - esquerda de texto em Windows Forms para globalização e Como: Exibir Direito - para - esquerda de texto em Windows Forms para globalização e Como: Exibir Direito - para - esquerda de texto em Windows Forms para globalização e Como: Exibir texto da direita para a esquerda no Windows Forms para globalização e Como: Exibir o texto da direita para esquerda no Windows Forms para globalização e Como exibir texto da direita para a esquerda nos Windows Forms para globalização.

O efeito da propriedade RightToLeft pode ser diferente nos diferentes controles. Em alguns controles, a propriedade somente define a ordem de leitura, como nos controles Button, TreeView e ToolTip. Em outros controles, a propriedade RightToLeft muda tanto a ordem de leitura quanto o layout. Isto inclui os controles RadioButton, ComboBox e CheckBox. Outros controles exigem que a propriedade RightToLeftLayout seja aplicada para espelhar o seu layout da direita para a esquerda. A tabela seguinte fornece detalhes sobre como as propriedades RightToLeft e RightToLeftLayout afetam controles individuais dos Formulários do Windows.

Controle/Componente

Efeito da propriedade RightToLeft

Efeito da propriedade RightToLeftLayout

Exige espelhamento?

Button

Define a ordem de leitura D-E. Inverte TextAlign, ImageAlign, e TextImageRelation

Sem efeito

Não

CheckBox

A check box é exibida no lado direito do texto

Sem efeito

Não

CheckedListBox

Todas as check boxes são exibidas no laso direito do texto

Sem efeito

Não

ColorDialog

Sem efeito; depende da linguagem do sistema operacional

Sem efeito

Não

ComboBox

Itens em uma combo box são alinhados pela direita

Sem efeito

Não

ContextMenu

Aparece alinhado pela direita com ordem de leitura D-E

Sem efeito

Não

DataGrid

Aparece alinhado pela direita com ordem de leitura D-E

Sem efeito

Não

DataGridView

Afeta tanto a ordem de leitura D-E quanto o layout do controle

Sem efeito

Não

DateTimePicker

Sem efeito; depende da linguagem do sistema operacional

Espelha o controle

Sim

DomainUpDown

Alinha pela esquerda os botões cima e baixo

Sem efeito

Não

ErrorProvider

Sem suporte

Sem efeito

Não

FontDialog

Depende da linguagem do sistema operacional

Sem efeito

Não

Form

Define ordem de leitura D-E e inverte as barras de rolagem

Espelha o formulário

Sim

GroupBox

A legenda é exibida com alinhamento pela direita. Controles filhos podem herdar esta propriedade.

Use a TableLayoutPanel dentro do controle para suporte a espelhamento da direita para a esquerda

Não

HScrollBar

Começa com a caixa de rolagem (thumb) alinhada pela direita

Sem efeito

Não

ImageList

Não é exigida

Sem efeito

Não

Label

É exibido com alinhamento pela direita. Inverte TextAlign e ImageAlign

Sem efeito

Não

LinkLabel

É exibido com alinhamento pela direita. Inverte TextAlign e ImageAlign

Sem efeito

Não

ListBox

Os itens são alinhados pela direita

Sem efeito

Não

ListView

Define a ordem de leitura para D-E; elementos permanecem alinhados pela esquerda

Espelha o controle

Sim

MainMenu

É exibido com alinhamento pela direita com ordem de leitura D-E em tempo de execução (não em tempo de design)

Sem efeito

Não

MaskedTextBox

Exibe o texto da direita para a esquerda

Sem efeito

Não

MonthCalendar

Sem efeito; depende da linguagem do sistema operacional

Espelha o controle

Sim

NotifyIcon

Sem suporte

Sem suporte

Não

NumericUpDown

Botões cima e baixo são alinhados pela esquerda

Sem efeito

Não

OpenFileDialog

Sem efeito; depende da linguagem do sistema operacional

Sem efeito

Não

PageSetupDialog

Sem efeito; depende da linguagem do sistema operacional

Sem efeito

Não

Panel

Controles filhos podem herdar esta propriedade

Use TableLayoutPanel dentro do controle para suporte D-E

Sim

PictureBox

Sem suporte

Sem efeito

Não

PrintDialog

Sem efeito; depende da linguagem do sistema operacional

Sem efeito

Não

PrintDocument

A barra de rolagem vertical fica alinhada pela esquerda e a barra de rolagem horizontal começa da esquerda

Sem efeito

Não

PrintPreviewDialog

Sem suporte

Sem suporte

Não

ProgressBar

Não é afetado por esta propriedade

Espelha o controle

Sim

RadioButton

O radio button é exibido no lado direito do texto

Sem efeito

Não

RichTextBox

Elementos de controle que incluem texto são exibidos da direita para a esquera, com ordem de leitura D-E

Sem efeito

Não

SaveFileDialog

Sem efeito; depende da linguagem do sistema operacional

Sem efeito

Não

SplitContainer

O layour do painel é invertido; a barra de rolagem vertical aparece na esquerda; a barra de rolagem horizontal começa da direita

Use uma TableLayoutPanel para espelhar a ordem dos controles filhos

Não

Splitter

Sem suporte

Sem efeito

Não

StatusBar

Não possui suporte; use StatusStrip no seu lugar

Sem efeito; use StatusStrip no seu lugar

Não

TabControl

Não é afetado por esta propriedade

Espelha o controle

Sim

TextBox

Exibe o texto da direita para a esquerda, com ordem de leitura D-E

Sem efeito

Não

Timer

Não é exigida

Não é exigida

Não

ToolBar

Não é afetado por esta propriedade; use ToolStrip no seu lugar

Sem efeito; use ToolStrip no seu lugar

Sim

ToolTip

Define ordem de leitura D-E

Sem efeito

Não

TrackBar

A rolagem ou rastreamento começa da direita; quando a Orientation é vertical, a marcação ocorre da direita

Sem efeito

Não

TreeView

Define somente ordem de leitura D-E

Espelha o controle

Sim

UserControl

A barra de rolagem vertical aparece na esquera; a barra de rolagem horizontal tem o ícone na direita

Não há suporte direto; use um TableLayoutPanel

Não

VScrollBar

É exibido no lado esquerdo em vez de no lado direito de controles roláveis

Sem efeito

Não

Codificação

Os Formulários do Windows oferecem suporte a Unicode, para que voce possa incluir qualquer conjunto de caracteres quando você cria seus aplicativos bidirecionais. No entanto, nem todos os controles de Formulários do Windows oferecem suporte a Unicode em todas as plataformas. Para obter mais informações, consulte Encoding and Windows Forms Globalization.

GDI+

Você pode usar GDI+ para desenhar texto com ordem de leitura D-E. O método DrawString, que é usado para desenhar o texto, oferece suporte a um parâmetro StringFormat que você pode definir no membro DirectionRightToLeft da enumeração StringFormatFlags para inverter o ponto de origem do texto.

Caixas de Diálogo Comuns

Ferramentas do sistema, como caixas de diálogo Abrir Arquivo estão sob o controle do Windows. Elas podem herdar elementos da linguagem do sistema operacional. Se você estiver usando uma versão do Windows com as configurações de linguagem corretas, estas caixas de diálogo funcionarão corretamente com liguagens bidirecionais.

Da mesma forma, caixas de mensagem passam pelo sistema operacional e oferecem suporte a linguagens bidirecionais. As legendas nos botões de caixas de mensagem são baseadas na configuração de linguagem atual. Por padrão, caixas de mensagem não utilizam ordem de leitura da direita para a esquerda, mas você pode especificar um parâmetro para mudar a ordem de leitura quando as caixas de mensagem são exibidas. Para obter mais informações, consulte Como: Criar caixas de mensagem para Bi-Directional Windows Forms.

RightToLeft, Scrollbars, e ScrollableControl

Existe atualmente uma limitação dos Formulários do Windows que previne que todas as classes que derivam de ScrollableControl atuem apropriadamente quando concomitantemente RightToLeft está habilitado e AutoScroll está definido como Yes. Por exemplo, vamos dizer que você coloque um controle como Panel — ou uma classe recipiente derivada de Panel (como FlowLayoutPanel ou TableLayoutPanel) — em seu formulário. Se você definir AutoScroll no recipiente para Yes e definir a propriedade Anchor em um ou mais controles dentro do recipiente para Right, então nenhuma barra de rolagem aparecerá. A classe derivada de ScrollableControl comporta-se como se AutoScroll estivesse setada para No.

Atualmente, a única solução alternativa é aninhar um ScrollableControl dentro de outro ScrollableControl. Por exemplo, se você precisar que o TableLayoutPanel trabalhe nesta situação, você pode colocá-lo dentro de um controle Panel e definir AutoScroll no Panel como Yes.

Espelhamento

Espelhamento refere-se a inverter o layout dos elementos da IU para que eles fluam da direita para a esquerda. Em um Formulário do Windows espelhado, por exemplo, os botões Minimizar, Maximizar e Fechar aparecem no extremo esquerdo da barra de título, não no extremo direito.

Definir a propriedade RightToLeft de um formulário ou controle como true inverte a ordem de leitura dos elementos do formulário, mas esta definição não inverte o layout para tornar-se da direira para a esquerda — isto é, não causa o espelhamento. Por exemplo, definir esta propriedade não move os botões Minimizar, Maximizar e Fechar da barra de título do formulário para o lado esquedo do mesmo. Da mesma forma, alguns controles, como TreeView, requerem espelhamento para mudar o seu modo de exibição para ser apropriado para Arábico ou Hebraico. Você pode espelhar estes controles definindo a propriedade RightToLeftLayout.

Você pode criar versões espelhadas dos seguintes controles:

Alguns controles são selados. Portanto, você não pode derivar um novo controle deles. Eles incluem os controles ImageList e ProgressBar.

Consulte também

Conceitos

Suporte bidirecional para aplicativos da Web ASP.NET

Outros recursos

Globalizando Formulários do Windows