Compartilhar via


Suporte bidirecional para aplicativos do Windows Forms

Você pode usar o Visual Studio para criar aplicativos baseados no Windows que oferecem suporte a idiomas bidirecionais (da direita para a esquerda), como árabe e hebraico. Isso inclui formulários padrão, caixas de diálogo, formulários MDI e todos os controles com os quais você pode trabalhar nesses formulários, ou seja, todos os objetos no Control namespace.

Suporte a cultura

Configurações de cultura e da interface do usuário determinam como um aplicativo funciona com datas, horas, moeda e outras informações. Suporte para a cultura e cultura da interface do usuário é o mesmo para idiomas bidirecionais, assim como para outros idiomas. Para obter mais informações, consulte Classes específicas de cultura para formulários globais do Windows e formulários da Web.

Propriedades RightToLeft e RightToLeftLayout

A classe base Control , da qual os formulários derivam, inclui uma RightToLeft propriedade que você pode definir para alterar a ordem de leitura de um formulário e seus controles. Se você definir a propriedade do RightToLeft formulário, por padrão, os controles no formulário herdarão essa configuração. No entanto, você também pode definir a RightToLeft propriedade individualmente na maioria dos controles. Também consultar Como exibir texto da direita para a esquerda nos Windows Forms para globalização.

O efeito da propriedade pode diferir de RightToLeft um controle para outro. Em alguns controles, a propriedade define apenas a ordem de leitura, como nos Buttoncontroles , TreeView e ToolTip . Em outros controles, a propriedade altera a ordem de leitura e o RightToLeft layout. Isso inclui o RadioButton, ComboBox e CheckBox controles. Outros controles exigem que a RightToLeftLayout propriedade seja aplicada para espelhar seu layout da direita para a esquerda. A tabela a seguir fornece detalhes sobre como as propriedades e RightToLeftLayout afetam controles individuais do RightToLeft Windows Forms.

Controle/componente Propriedade RightToLeft Efeito da propriedade RightToLeftLayout Exige espelhamento?
Button Define o sentido da leitura RTL. Reverte TextAlign, ImageAligne TextImageRelation Sem efeito Não
CheckBox A caixa de seleção é exibida à direita do texto Sem efeito Não
CheckedListBox Todas as caixas de seleção são exibidas à direita do texto Sem efeito Não
ColorDialog Não é afetado; depende do idioma do sistema operacional Sem efeito Não
ComboBox Itens no controle de caixa de combinação são alinhadas à direita Sem efeito Não
ContextMenu É exibido alinhado à direita com sentido da leitura RTL Sem efeito Não
DataGrid É exibido alinhado à direita com sentido da leitura RTL Sem efeito Não
DataGridView Afeta a ordem e controle de layout de leitura RTL Sem efeito Não
DateTimePicker Não é afetado; depende do idioma do sistema operacional Espelha o controle Sim
DomainUpDown Alinha à esquerda os botões para cima e para baixo Sem efeito Não
ErrorProvider Sem suporte Sem efeito Não
FontDialog Depende do idioma do sistema operacional Sem efeito Não
Form Define o sentido da leitura RTL e inverte as barras de rolagem Espelha o formulário Sim
GroupBox A legenda é exibida alinhada à direita. Controles filho podem herdar esta propriedade. Use um TableLayoutPanel dentro do controle para suporte de espelhamento da direita para a esquerda Não
HScrollBar Começa com a caixa de rolagem (thumb) alinhada à direita Sem efeito Não
ImageList Não é necessária Sem efeito Não
Label Exibido alinhado à direita. Reversos TextAlign e ImageAlign Sem efeito Não
LinkLabel Exibido alinhado à direita. Reversos TextAlign e ImageAlign Sem efeito Não
ListBox Itens são alinhados à direita Sem efeito Não
ListView Define o sentido da leitura RTL; elementos permanecem alinhados à esquerda Espelha o controle Sim
MainMenu Exibido alinhado à direita com sentido da leitura RTL 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 Não é afetado; depende do idioma do sistema operacional Espelha o controle Sim
NotifyIcon Sem suporte Sem suporte Não
NumericUpDown Botões para cima e para baixo são alinhados à esquerda Sem efeito Não
OpenFileDialog Em sistemas operacionais da direita para a esquerda, definir a propriedade do RightToLeft formulário que contém para RightToLeft.Yes localizar a caixa de diálogo Sem efeito Não
PageSetupDialog Não é afetado; depende do idioma do sistema operacional Sem efeito Não
Panel Controles filho podem herdar esta propriedade Use TableLayoutPanel dentro do controle para suporte da direita para a esquerda Sim
PictureBox Sem suporte Sem efeito Não
PrintDialog Não é afetado; depende do idioma do sistema operacional Sem efeito Não
PrintDocument A barra de rolagem vertical torna-se alinhada à 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 Botão de opção é exibido à direita do texto Sem efeito Não
RichTextBox Elementos de controle que incluem texto são exibidos da direita para a esquerda com sentido da leitura RTL Sem efeito Não
SaveFileDialog Não é afetado; depende do idioma do sistema operacional Sem efeito Não
SplitContainer Layout do painel é invertido; barra de rolagem vertical aparece à esquerda; barra de rolagem horizontal começa da direita Usar um TableLayoutPanel para espelhar a ordem dos controles filho Não
Splitter Sem suporte Sem efeito Não
StatusBar Não suportado; use StatusStrip em vez disso Sem efeito; use StatusStrip em vez disso Não
TabControl Não afetado por esta propriedade Espelha o controle Sim
TextBox Exibe o texto da direita para a esquerda com sentido da leitura RTL Sem efeito Não
Timer Não é necessária Não é necessária Não
ToolBar Não afetado por esta propriedade; use ToolStrip em vez disso Sem efeito; use ToolStrip em vez disso Sim
ToolTip Define o sentido da leitura RTL Sem efeito Não
TrackBar A rolagem ou faixa começa a partir da direita; quando Orientation é vertical, os carrapatos ocorrem a partir da direita Sem efeito Não
TreeView Define somente sentido da leitura RTL Espelha o controle Sim
UserControl Barra de rolagem vertical aparece à esquerda; barra de rolagem horizontal tem o ícone à direita Sem apoio direto; use um TableLayoutPanel Não
VScrollBar Exibido no lado esquerdo em vez do lado direito de controles roláveis Sem efeito Não

Codificação

Windows Forms oferece suporte a Unicode, para que você possa incluir qualquer caractere definido quando você cria seus aplicativos bi-direcionais. No entanto, nem todos os controles dos Windows Forms oferecem suporte a Unicode em todas as plataformas.

GDI+

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

Caixas de diálogo comuns

Ferramentas do sistema, como a caixa de diálogo Abrir arquivo estão sob o controle do Windows. Elas herdam os elementos de linguagem do sistema operacional. Se você estiver usando uma versão do Windows com as configurações de idioma correto, essas caixas de diálogo funcionarão corretamente com idiomas bidirecionais.

Da mesma forma, caixas de mensagem passam pelo sistema operacional e fornecem suporte a texto bidirecional. As legendas nos botões da caixa de mensagem baseiam-se na configuração de idioma atual. Por padrão, as caixas de mensagens não use sentido da leitura da direita para a esquerda, mas você pode especificar um parâmetro para alterar o sentido da leitura quando as caixas de mensagem são exibidas.

RightToLeft, Scrollbars e ScrollableControl

Atualmente, há uma limitação no Windows Forms que impede que todas as classes derivadas ajam corretamente quando ambas RightToLeft estão habilitadas ScrollableControl e AutoScroll definidas como Yes. Por exemplo, digamos que você coloque um controle como —ou uma classe de contêiner derivada de Panel (como PanelFlowLayoutPanel ou TableLayoutPanel)— em seu formulário. Se você definir AutoScroll no contêiner como e definir a Anchor propriedade em um ou mais controles dentro do contêiner como YesRight, nenhuma barra de rolagem será exibida. A classe derivada de ScrollableControl atos como se AutoScroll estivessem definidos como No.

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

Espelhamento

Espelhamento refere-se a inverter o layout dos elementos de interface do usuário para que eles fluam da direita para a esquerda. No Windows Form espelhado, por exemplo, os botões minimizar, maximizar e fechar aparecem mais à esquerda na barra de título, não mais à direita.

Definir a propriedade de RightToLeft um formulário ou controle para inverter a ordem de leitura dos elementos em um formulário, mas essa configuração não inverte o layout para true ser da direita para a esquerda, ou seja, não causa espelhamento. Por exemplo, a configuração dessa propriedade não move os botões minimizar, maximizar e fechar na barra de título do formulário para o lado esquerdo do formulário. Da mesma forma, alguns controles, como o TreeView controle, exigem espelhamento para alterar sua exibição para ser apropriado para árabe ou hebraico. Você pode espelhar esses controles definindo a RightToLeftLayout propriedade.

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

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

Confira também