Pergunta

Eu estou correndo em um problema ao tentar ancorar uma caixa de texto a uma forma em todos os 4 lados. Eu adicionei uma caixa de texto a um formulário e definir a propriedade Multiline como True ea propriedade Anchor para esquerda, direita, para cima, e para baixo para que a caixa de texto irá expandir e encolher com o formulário em tempo de execução. Eu também tenho alguns outros controles acima e abaixo da caixa de texto.

A ancoragem funciona corretamente no Visual Studio 2005 (ou seja, eu pode redimensionar o formulário e os controles expandir e encolher como esperado), mas quando eu executar o projeto, a parte inferior da caixa de texto é estendido para a parte inferior do formulário, atrás dos outros controles que normalmente aparecem abaixo dela. Esse problema ocorre quando o formulário é carregado, antes de qualquer redimensionamento é tentada. A ancoragem da caixa de texto está correto para o topo, esquerda e direito lados; só o fundo não está funcionando corretamente.

Alguém ouviu falar deste e se assim for, você foi capaz de encontrar uma solução?

Obrigado!

UPDATE:

Aqui você encontra o código do designer como pelo pedido Greg D's (eu só estou incluindo o material que tinha a ver com a própria caixa de texto, não os outros controles):

Friend WithEvents txtRecommendationText1 As System.Windows.Forms.TextBox

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    Me.txtRecommendationText1 = New System.Windows.Forms.TextBox

    ' ...snip...

    'txtRecommendationText1

    Me.txtRecommendationText1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                Or System.Windows.Forms.AnchorStyles.Left) _
                Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
    Me.txtRecommendationText1.Location = New System.Drawing.Point(4, 127)
    Me.txtRecommendationText1.Multiline = True
    Me.txtRecommendationText1.Name = "txtRecommendationText1"
    Me.txtRecommendationText1.Size = New System.Drawing.Size(223, 149)
    Me.txtRecommendationText1.TabIndex = 10
End Sub

Outra atualização:

A caixa de texto que eu originalmente publicado sobre não foi herdada de uma forma baseclass (embora tenha sido adicionado a uma classe de controle personalizada do usuário, eu provavelmente deveria ter mencionado que anteriormente), mas Recentemente, correu para o mesmo problema em um conjunto totalmente alheios de controlos que foram herdados de uma forma baseclass. É fácil culpar esses problemas sobre possíveis bugs no framework .NET, mas está realmente começando a olhar dessa forma para mim.

Foi útil?

Solução 3

A caixa de texto que eu originalmente publicado sobre não foi herdada de uma forma baseclass (embora tenha sido adicionado a uma classe de controle personalizada do usuário, eu provavelmente deveria ter mencionado que anteriormente), mas Recentemente, correu para o mesmo problema em um conjunto totalmente alheios de controlos que foram herdados de uma forma baseclass. É fácil culpar esses problemas sobre possíveis bugs no framework .NET, mas está realmente começando a olhar dessa forma para mim.

Outras dicas

O seu Form localizada? Verifique os arquivos de recursos para uma entrada com Textbox.Size, delete é e redefinir o tamanho.
É o seu Form herdada e é o Textbox na baseform? Tente definir modificador de acesso do Textbox para protegido ou público.
você implementou lógica de redimensionamento personalizado? Desligá-lo e ver se o problema ainda está lá.
Você já entrou em uma Textbox.MinimumSize / MaximumSize? Remover ou alterar o valor.

Também pode ser uma combinação dessas coisas ...

Será que a forma pular de volta para o layout esperado quando você redimensioná-la depois de ter sido inicializado estranhamente? Além disso, tem de definir uma altura ou MinimumHeight / MaximumHeight propriedade para a caixa de texto?

Se possível, alguns trechos do código do designer pode ser útil. :)

Uma possibilidade que eu correr em no passado é DPI. Se você estiver executando / a testar seu código em uma máquina com uma configuração diferente DPI do que a máquina que você está desenvolvendo, você pode observar algumas coisas estranhas.

A funcionalidade de ancoragem essencialmente, estabelece uma distância fixa entre o bordo de um controlo e a borda do pai do controle. É a sua caixa de texto incorporado dentro de outro controle (por exemplo, um painel) que não tem suas âncoras definidas corretamente? botão direito do mouse na caixa de texto no designer deve aparecer um menu que permite selecionar todos os controles que existem debaixo dela, também.

O seu programa inclui qualquer lógica de redimensionamento costume, ou ele modificar o tamanho da caixa de texto programaticamente fora do código gerado pelo designer? Isso também pode resultar em um comportamento estranho. Eu assumiu a manutenção de um número de peças de software em minha organização, onde os desenvolvedores originais passou uma grande quantidade de tempo implementar a lógica (Buggy) redimensionamento que eu tinha que arrancar para que eu pudesse simplesmente deixar o código gerado pelo designer fazer o trabalho para mim.

É muito provável por causa do 'AutoScaleMode' propriedade sendo definida em InitializeComponent (). Tente defini-lo como 'Nenhum' e ver se isso resolve o problema. Eu tive esses problemas um par de vezes agora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top