C# ile Form'a gölge efekti verelim ve titreme sorununu düzeltelim

Windows Forms uygulamalarında Form‘un gölge efektine sahip olmasını istiyorsak, öncelikle Form‘un FormBorderStyle özelliğini None yapmalıyız.

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;</pre>

Form sınıfının CreateParams özelliğini override etmemiz gerekiyor. CreateParams özelliği geriye CreateParams tipinde bir nesne döndürür.

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;

        cp.ClassStyle |= 0x20000;

        return cp;
    }
}

CreateParams sınıfının ClassStyle özelliğine 0x20000 değerini ekliyoruz. Böylece formumuz çalışmaya başladığında etrafında gölge gözüküyor.

Gölgeli Form

Form üzerine çok fazla kontrol eklediğimizde, özellikle eğer kontroller hafızada çok yer kaplayan 3.parti kontrollerden ise; formumuzda titreme diyebileceğimiz bir efekt oluşmaya başlar.

Çoğu zaman bu durum rahatsızlık oluşturma derecesine kadar varır.

Bu sorunu çözmek için, kontrollerin DoubleBuffered özelliğini true değerine ayarlamamız gerekmektedir.

Fakat DoubleBuffered özelliği Form sınıfının değil Control sınıfının bir özelliği olduğundan dolayı, Form’un titremesini gidermek için kullanamayız.

Form sınıfının CreateParams özelliğinde bu sorunu da çözebiliriz;

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;

        cp.ExStyle |= 0x02000000;

        return cp;
    }
}

Bu sefer CreateParams sınıfının ExStyle özelliğine 0x02000000 değerini eklememiz gerekiyor.

Örnek uygulamanın tüm kodu;

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;

        cp.ClassStyle |= 0x20000;

        cp.ExStyle |= 0x02000000;

        return cp;
    }
}


blog comments powered by Disqus

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı