msHOWTO

9 Nisan 2012 Pazartesi

C# da FlowLayoutPanel Kullanımı ve Özellikleri

Merhaba arkadaşlar.Bu makalemde FlowLayoutPanel nesnesini anlatacağım ve örnek olarak da satranç tahtasını yapacağım.FlowLayoutPanel bir container olarak görev yapmaktadır.İçerisine eklenen nesneleri belirtilen özelliklere göre sıraya dizer.Sıraya dizme şekli verilen özelliğine göre değişmektedir.Peki bu nesne hangi ihtiyacımızı veya ihtiyaçlarımızı karşılar.Öncelikle nesnelerin daha düzenli belirli bir kurala göre gözükmesini sağlar.Bir başka faydası ise formumuzun boyutu değiştirildiğinde içerisindeki nesneler otomatik olarak yerleştirilir.Böyle bir nesnenin olmadığını düşünürsek eğer formumuzun boyutları her değiştiğinde tekrar tekrar hesaplama yapıp nesneleri oluşturduğumuz algoritmaya göre yerleştirmemi gerecektir.Umarım faydası anlaşılmıştır.Hadi bir kaç önemli olan özelliklerini inceleyelim...

AutoScroll Özelliği :Eğer flowlayoutpanel nesnesinin içerisine eklenen kontroller flowlayoutpanel in dışarısına taşar ise otomatik olarak genişlik ve uzunluk scroll ları ortaya çıkar.

Flow Direction Özelliği: Bu özellik içerisinde tanımlanmış 4 farklı sıralama şekli vardır.Burada tanımlanan sıralama şekline göre içerisinde bulunan nesneleri otomatik olarak sıralar.

                    LeftToRight : Sola hizalı olarak yani soldan sağa doğru sıralama yapar.
                    TopDown : Yukarıdan başlayarak aşağıya doğru sıralama yapar.
                    BottomUp : Aşağıdan başlayarak yukarıya doğru sıralama yapar.
                    RightToLeft : Sağa hizalı olarak yani sağdan sola doğru sıralama yapar.

WrapContents Özelliği : True olarak ayarlandığında içerisine eklenen nesneleri flowlayoutpanel in genişliğine gelene kadar yanyana genişliğini aştıktan sonra da bir alt satırdan devam etmesini sağlar.

Evet arkadaşlar clowlayoutpanel in en önemli ayırt edici özellikleri bunlardır.Gelelim satranç tahtasını oluşturmaya.Formunuza bir adet flowlayoutpanel atın yeterlidir.Ve aşağıdaki kodları Fomun Load olayına yazın.



int i = 0, j = 0, yer = 0;
            for (i = 0; i < 8; i++)
            {
                for (j = 0; j < 8; j++)
                {
                    if (i%2==0)
                    {
                        if (yer == 1)
                        {
                            Button btn = new Button();
                            btn.BackColor = Color.Black;
                            btn.Size = new Size(50, 50);
                            flowLayoutPanel1.Controls.Add(btn);
                            yer = 0;
                        }
                        else
                        {
                            yer++;
                            Button btn = new Button();
                            btn.BackColor = Color.White;
                            btn.Size = new Size(50, 50);
                            flowLayoutPanel1.Controls.Add(btn);
                        }

                    }
                    else
                    {
                        if (yer == 0)
                        {
                            Button btn = new Button();
                            btn.BackColor = Color.Black;
                            btn.Size = new Size(50, 50);
                            flowLayoutPanel1.Controls.Add(btn);
                            yer++;
                        }
                        else
                        {
                            yer = 0;
                            Button btn = new Button();
                            btn.BackColor = Color.White;
                            btn.Size = new Size(50, 50);
                            flowLayoutPanel1.Controls.Add(btn);
                        }
                    }
                   
                }
            }

Görüntü olarak ;









İşte bu kadar basit.Umarım faydalı olmuştur.Bir sonraki makalemde görüşmek dileğiyle ...



7 yorum:

  1. çok guzel olmuş koray bey..

    YanıtlaSil
  2. Teşekkür ederim .. Faydalı olabildiysem ne mutlu ...

    YanıtlaSil
  3. Ellerinize sağlık hocam, çok güzel iş yapmışsınız

    YanıtlaSil
  4. "Yer"değişkenine bence gerek yok

    YanıtlaSil
  5. int i, j;

    for (i = 0; i < 8; i++)
    {
    for (j = 0; j < 8; j++)
    {
    if (i % 2 == 0)
    {
    if (j % 2 == 0)
    {
    Button btn = new Button();
    btn.BackColor = Color.White;
    btn.Size = new Size(50, 50);
    flowLayoutPanel1.Controls.Add(btn);
    }
    else
    {
    Button btn = new Button();
    btn.BackColor = Color.Black;
    btn.Size = new Size(50, 50);
    flowLayoutPanel1.Controls.Add(btn);
    }
    }
    else
    {
    if (j % 2 == 0)
    {
    Button btn = new Button();
    btn.BackColor = Color.Black;
    btn.Size = new Size(50, 50);
    flowLayoutPanel1.Controls.Add(btn);
    }
    else
    {
    Button btn = new Button();
    btn.BackColor = Color.White;
    btn.Size = new Size(50, 50);
    flowLayoutPanel1.Controls.Add(btn);
    }

    }
    }
    }

    YanıtlaSil
    Yanıtlar
    1. Aslında tek döngü ile de yapılır ama açıklayıcı ve anlaşılır olsun diye bu şekilde yapmıştım.Algoritmalar farklılık tabi ki de gösterecektir elbet.Yer değişkeni olmadan da olur :D

      Sil
  6. hocam merhaba ben şimdi basit bir satranç programı yapmaya çalışıyorum. Bu nesneyi kullandım sizin kodları kullandım. Otomatik kendi buton oluşturmuş güzel mesela d5 deki butonu nasıl seçebilirim. bu flowlayoutpanelin items gibi bir özelliği var mı ya da başka bir mantığı?

    YanıtlaSil