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? |
---|---|---|---|
Define a ordem de leitura D-E. Inverte TextAlign, ImageAlign, e TextImageRelation |
Sem efeito |
Não |
|
A check box é exibida no lado direito do texto |
Sem efeito |
Não |
|
Todas as check boxes são exibidas no laso direito do texto |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Sem efeito |
Não |
|
Itens em uma combo box são alinhados pela direita |
Sem efeito |
Não |
|
Aparece alinhado pela direita com ordem de leitura D-E |
Sem efeito |
Não |
|
Aparece alinhado pela direita com ordem de leitura D-E |
Sem efeito |
Não |
|
Afeta tanto a ordem de leitura D-E quanto o layout do controle |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Espelha o controle |
Sim |
|
Alinha pela esquerda os botões cima e baixo |
Sem efeito |
Não |
|
Sem suporte |
Sem efeito |
Não |
|
Depende da linguagem do sistema operacional |
Sem efeito |
Não |
|
Define ordem de leitura D-E e inverte as barras de rolagem |
Espelha o formulário |
Sim |
|
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 |
|
Começa com a caixa de rolagem (thumb) alinhada pela direita |
Sem efeito |
Não |
|
Não é exigida |
Sem efeito |
Não |
|
É exibido com alinhamento pela direita. Inverte TextAlign e ImageAlign |
Sem efeito |
Não |
|
É exibido com alinhamento pela direita. Inverte TextAlign e ImageAlign |
Sem efeito |
Não |
|
Os itens são alinhados pela direita |
Sem efeito |
Não |
|
Define a ordem de leitura para D-E; elementos permanecem alinhados pela esquerda |
Espelha o controle |
Sim |
|
É 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 |
|
Exibe o texto da direita para a esquerda |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Espelha o controle |
Sim |
|
Sem suporte |
Sem suporte |
Não |
|
Botões cima e baixo são alinhados pela esquerda |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Sem efeito |
Não |
|
Controles filhos podem herdar esta propriedade |
Use TableLayoutPanel dentro do controle para suporte D-E |
Sim |
|
Sem suporte |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Sem efeito |
Não |
|
A barra de rolagem vertical fica alinhada pela esquerda e a barra de rolagem horizontal começa da esquerda |
Sem efeito |
Não |
|
Sem suporte |
Sem suporte |
Não |
|
Não é afetado por esta propriedade |
Espelha o controle |
Sim |
|
O radio button é exibido no lado direito do texto |
Sem efeito |
Não |
|
Elementos de controle que incluem texto são exibidos da direita para a esquera, com ordem de leitura D-E |
Sem efeito |
Não |
|
Sem efeito; depende da linguagem do sistema operacional |
Sem efeito |
Não |
|
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 |
|
Sem suporte |
Sem efeito |
Não |
|
Não possui suporte; use StatusStrip no seu lugar |
Sem efeito; use StatusStrip no seu lugar |
Não |
|
Não é afetado por esta propriedade |
Espelha o controle |
Sim |
|
Exibe o texto da direita para a esquerda, com ordem de leitura D-E |
Sem efeito |
Não |
|
Não é exigida |
Não é exigida |
Não |
|
Não é afetado por esta propriedade; use ToolStrip no seu lugar |
Sem efeito; use ToolStrip no seu lugar |
Sim |
|
Define ordem de leitura D-E |
Sem efeito |
Não |
|
A rolagem ou rastreamento começa da direita; quando a Orientation é vertical, a marcação ocorre da direita |
Sem efeito |
Não |
|
Define somente ordem de leitura D-E |
Espelha o controle |
Sim |
|
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 |
|
É 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