quinta-feira, 30 de outubro de 2008

 

Contornando Bug do C# Windows Forms

O Windows Forms do C#, no Visual Studio 2005, tem um "bug" que não afeta o funcionamento do programa, mas o efeito visual gerado por ele é muito feio.
Ao criar um formulário, para aplicações MDI, e definir que ele não deve apresentar o botão maximizar (MaximizeBox = false), espera-se que ele nunca apareça maximizado, porém isso nem sempre acontece.
O problema ocorre quando o aplicativo está com uma janela aberta e maximizada. Ao abrimos o segundo , não modal (janela.Show()) e com o botão maximizar desabilitado, esta última também inicia de forma maximizada. Somente depois de clicar em seu botão restaurar é que ele passa a funcionar corretamente.
Para contornar esse erro, você deve definir durante o evento "Load" desses formulários, que eles não devem retornar ao tamanho normal caso estejam maximizados.
Então, crie uma janela ancestral, para todas as suas janelas e codifique o evento Load assim:

#region Correção de Bug do VisualStudio na apresentação de janelas com botão MAXIMIZAR desabilitado
// Se o formulário está com o botão maximizar desabilitado
if (!this.MaximizeBox)
{
    // E o estado atual dele é maximizado, então
    if (this.WindowState == FormWindowState.Maximized)
    {
        // Muda o estado para normal durante o load da janela (Correção de Bug do VisualStudio)
        this.WindowState = FormWindowState.Normal;
        if (this.MdiParent != null)
        {
            this.MdiParent.Refresh();
        }
        else
        {
            this.Refresh();
        }
    }
}

Marcadores: , , ,


Comentários:

Postar um comentário

Assinar Postar comentários [Atom]





<< Página inicial

Add to Technorati Favorites Adicionar aos Favoritos BlogBlogs diHITT

Assinar Postagens [Atom]