Pergunta

Eu tenho um aplicativo WinForms que permite editar documentos. Cada documento é feito de capítulos e cada capítulo possui uma coleção de blocos de RTF. Os blocos RTF são carregados em um PanelControl usando Dock = DockStyle.Top.

O problema é que, quando a altura total de um capítulo fica muito grande (estimando> 32768 pixels), os blocos inferiores não estão ancorados corretamente: eles aparecem atrás um do outro. Ao tentar isolar o problema, notei que isso também acontece com controles mais simples como um LabelControl.

Coisas que tentei são métodos como Refresh(), Invalidate() e PerformLayout: elas vão não Resolver o problema.

o que faz A ajuda é redimensionar o formulário. Depois disso, todos os controles são dispostos corretamente.

Alguém pode ajudar em como resolver isso sem redimensionar o formulário?

Anexado um Projeto de demonstração simples Isso ilustra o problema.

screenshot

Foi útil?

Solução

Do meu comentário acima (parece realmente ser o problema aqui):

Winforms (e o GDI em geral) geralmente se comporta imprevisivelmente se tentar usar coordenadas fora de uma faixa de 16 bits. Tente evitar isso. Na gama de problemas possíveis estão as coisas que não estão sendo atraídas, o FlowExceptions em posições de código inesperadas etc.

Outras dicas

Se for possível para você tomar a decisão de alterar esse layout, sugiro que você adote outra abordagem para mostrar/editar os capítulos de documentos com algum tipo de paginação ou colapsar os blocos RTF em um menu e mostrando apenas atuais.

Você vê .. faz sentido que o valor da altura seja um valor inteiro de 16 bits. Uma tela é muito mais pequena que isso. À medida que a altura do painel aumenta para um tamanho tão alto. Você vê que o uso da barra de rolagem se tornará muito, muito sensata .. e não é uma coisa boa.

O conteúdo com tamanho 2x, 3x, 5x sendo rolado é utilizável para o usuário. Mas rolar um conteúdo com a altura (~ 32768) de pelo menos (usando uma boa resolução monitor com maximização da janela) no caso ideal 32X O tamanho da janela é muito desconfortável.

Além disso, acredito que a produtividade do usuário diminuirá devido à dificuldade cerebral em localizar "coisas" em uma coleção crescente de "coisas".

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