System.Windows.Controls.Grid does not contain a public definition for GetEnumerator. Hatası

6. Mayıs 2010

WPF foreachle grid içerisindeki kontrollere ulaşmak isterken  foreach statement can not operate on variables of type 'System.Windows.Controls.Grid' because 'System.Windows.Controls.Grid' does not contain a public definition for 'GetEnumerator' hatasıyla karşılaştım.Yazdığım kod aşağıdaki gibiydi.

foreach (StackPanel stackpanel in grid_stackpanels)
            {
                foreach (Rectangle rect in stack.Children)
                {
                    ……………………...

                }
            }

Normal bir masaüstü projesinde kontrollere erişmek için  foreach(……….in Controls ) diyince sıkıntısız çalışıyordu.Bende grid içerisinde de böyle arayacağımızı düşünmüştüm ancak böyle değilmiş.Gridin children’ları arasında gezinmek gerekiyormuş.Yani kod aşağıdaki şekilde olmalı.

foreach (StackPanel stackpanel in grid_stackpanels.Children)
            {
                foreach (Rectangle rect in stack.Children)
                {
                    ……………………...

                }
            }

Burda dikkat edilmesi gereken bir nokta daha var. İlk döngü gridin içerisindeki tüm kontrollerin hepsinin StackPanel, ikincisinde ise StackPanellerin içerisinde sadece Rectangle’lar olması gerekiyor.Böyle olmaması durumunda yani aranan kontrollerin dışında farklı bir kontrol varsa kodumuz aşağıdakine benzer bir hata verecektir.

Unable to cast object of type 'System.Windows.Shapes.Rectangle' to type 'System.Windows.Controls.StackPanel'.

Bu hatayı önlemek için foreach döngüsünü kullandığımız yerde aradığımız kontrol dışında farklı bir kontrol olmadığına emin olmalıyız.Çünkü o kontrolleri aradığımız kontrole cast etmeye çalışacak bu da hataya sebep olacaktır.

1 kişi tarafından 1.0 olarak değerlendirildi

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

WPF , , ,

C# Olay tetikleme

11. Ekim 2009

Bilindiği üzere kullanığımız componentlerin olayları var.Örneğin Button nesnesinin click eventi butona tıkladığımızda yapılacak işleri yapar.Bazı zamanlarda aynı işi başka yerde yapmak zorunda kalabiliriz.Aynı metodu tekrar yazacağımıza butonun click eventine çağırabiliriz.Farzedelim bir nesne üzerinde çalışıyoruz ve Button1'in click olayında yapılacak işi yapmamız gerekti,aşağıdaki kodla bunu halledebiliriz.

Button1_Click(Page,e);
Koddaki Page kısmı Button'un sender'ı , üzerinde çalıştığımız nesne. 'e' ise EventHandler'ı.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

C# , , ,

C# Inputbox kullanımı

4. Aralık 2008
Aşağıdaki kodda sadece OK butonu içeren bir inputbox'ın kullanımı vardır.Değer girilip OK'e tıklanınca formda bulunan textbox'ın ismi girilen değer olacaktır.Değeri bu şekilde aldıktan sonra başka şekillerde de kullanabilirsiniz.Ayrıca projenize sağ tıklayarak add reference kısmından , Microsoft.VisualBasic referansını eklemeniz gerekmektedir.


private void  buttonTest_Click(object  sender, System.EventArgs e) 
{
    InputBoxResult sonuc= InputBox.Show("konu", "Pencere başlığı", "textboxt text", null);
    if (sonuc.OK)
    {
        textBox1.Text = result.Text;
    }
}

Alternatif Çözüm olarak aşağıdai kodu deneyebilirsiniz.Projenize sağ tıklayıp Add Reference kısmından Microsoft.VisualBasic referansını eklemeyi unutmayın.

private void  buttonTest_Click(object  sender, System.EventArgs e) 
{

     string inptTry = Microsoft.VisualBasic.Interaction.InputBox("Değer Giriniz", "Değer girmelisiniz", "Default", 8, 5);

}

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

C# ,

C# Arraylist

15. Kasım 2008
Bilindiği üzere arraylist'lerin en büyük özelliklerinden birisi dinamik olmalarıdır.Kullanıcının runtime'da belirleyeceği bir boyutta dizi gerekiyorsa,bunu en kolay arraylist'lerle yapabiliriz.Yeni bir arraylist tanımlanacaksa Arraylist alistismi = new Arraylist(); şeklinde alistismi isminde bir arraylist nesnesi oluşturulabilir.

Arraylist'in burada iki metodundan bahsedeceğim,tabi başka metodları da var.Örneğin sayılar adında bir arraylistimiz olsun.Formda da bir textBox bulunsun.Textbox'ın içine yazdığımız sayının arraylistte olup olmadığına bakalım.

alistismi.contains(textBox1.text);   // bize true/false dönderecektir.

Ayrıca alistismi.Capacity();  metodu da o an için dizideki eleman sayısını dönderecektir.
 

Arraylist kullanımı için System.Collections; kütüphanesini eklemeyi unutmayın.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

C# ,

C# imagelist kontrolü

12. Kasım 2008
imagelist kontrolü ,formumuzda resimleri kullanacaksak işimize yarayacaktır.Bilindiği gibi resimle alakalı bir diğer kontrol olarak picturebox bulunmaktadır, imagelistte depoladığımız resimleri indis numaralarıyla pictureboxta görüntüleyebiliriz. Örnek olarak formumuzda birden fazla picturebox var ve biz bu resimleri runtime'da değiştirmek istiyoruz.Gerekli kodlardan sonra formumuzdaki resimleri dinamik olarak değiştirebilme imkanı doğabilmekte.İmagelistten picturebox'a resim aktarma kodu ise aşağıda verilmiştir.

pictureBox1.image=imagelist1.images[0];

Yukarıda da dediğim gibi dinamik olarak değiştirmede işinize yarayabilir.Örneğin son olarak ben,yazdığım fikstür çekme projesinde ,her hafta gösteriminde takımların amblemlerinin olmasını istedim,böylece form her yenilenmede takımların amblemleri label'da yazan isme göre değişti.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

C# , ,

C# bazı konsol kodları (console)

8. Kasım 2008
Konsolda beep(bip) sesi

Console.Beep(1986, 2);                     // örnek kod 1986 frekansında 10sn ses çıkarır

Konsolun arkaplan rengini değiştirme

Console.BackgroundColor = ConsoleColor.Blue;

Konsol yazı rengini değiştirme

Console.ForegroundColor = ConsoleColor.Black;

Konsolun başlığını değiştirme

Console.Title = "deneme";

Konsol ekranını temizleme

Console.Clear();

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

C# , ,