Ferramenta WinForms Taborder: quebrada ou apenas confusa?
-
28-09-2019 - |
Pergunta
Eu tenho um formulário com um monte de painéis e alguns painéis dentro de caixas de grupo. Ao usar a ferramenta Taborder no VS2005, os controles fora dos contêineres recebem números inteiros (0), os controles dentro dos painéis recebem decimais (72.0) e os controles nos painéis nas caixas de grupo recebem valores de três partes (73.73.0). Infelizmente, o pedido de guia resultante não tem nada a ver com o pedido em que cliquei em meus controles.
Essa ferramenta simplesmente não suporta recipientes aninhados? Estou fazendo algo errado? Talvez segurando o turno ou o Ctrl- quando clico (eu tentei sem sucesso)?
Vou ser forçado a digitar manualmente as ordens de guia de três partes para todos os meus controles? Isso seria uma chatice.
Solução
A ferramenta de ordem da guia não foi projetada para você inserir valores manualmente; Ele foi projetado para você clicar nos controles na ordem em que você gostaria que eles progredissem como guias do usuário.
Os números não são decimais; Eles representam a ordem da guia do controle em seu contêiner pai. Por exemplo, se você tem um formulário com um Panel
nomeado panel1
e a Button
dentro dele nomeado button1
, então button1
exibiria um número como:
X.Y
X
é a ordem da guia depanel1
Y
é a ordem da guia debutton1
dentro depanel1
.
Reconherei que o designer não é tão intuitivo (ou transparente) quanto provavelmente deveria ser, mas funciona.
Outras dicas
Eu tive o mesmo problema com caixas de texto e botões na caixa de grupo no vs2010. A Taborder Tool era apenas inútil: as ordens de guia foram quebradas, não importa como eu encomendei a parada da guia. Para fazer a ordem da guia correta, tive que reordenar como os controles são adicionados à caixa de grupo no código de inicialização do designer de formulário:
this.groupBox2.Controls.Add(this.startTimeTextBox);
this.groupBox2.Controls.Add(this.endTimeTextBox);
this.groupBox2.Controls.Add(this.exitButton);
Dessa forma, a ordem da guia seria iniciada notimextbox -> endtimeTextBox -> exitbutton e assim por diante.
Acho que descobri o caminho para fazê -lo no designer: o truque é aparentemente que você também precisa clicar nos painéis/caixas de grupo para atribuir as diferentes partes da ordem completa; Dessa forma, parece que um método de cliques de primeira linha precisa ser usado, em vez de clicar nos controles filhos.
Meio triste, já que força você a saber a estrutura completa de toda a forma, em vez de exatamente o que o usuário vê.
Eu tive o mesmo problema e descobri esta ferramenta: http://archive.msdn.microsoft.com/cdstabindex
Eu tive que mudar o manifesto para fazê -lo funcionar com o VS2010. Além disso, modifiquei o código -fonte para melhorar a interface do usuário um pouco melhor, mas mesmo assim, eu recomendaria dar uma olhada nessa ferramenta.
Remover Caixas de grupo a partir de Controles E tente novamente isso funciona para mim :)