none
asp.net te döngü ile oluşturulan çok sayıdaki butona farklı görevler atama nasıl yapılır? RRS feed

  • Soru

  • yazılan kodlar : 

    -------------------------------------------------------------------------------------------------------------------------------

    protected void Page_Init(object sender, EventArgs e) { Random rnd = new Random(); int j = 0; Button[] btn = new Button[25]; for (int ii = 0; ii < 5; ii++) { for (int i = 0; i < 5; i++) { btn[j] = new Button(); btn[j].ID = "btn_" + j.ToString(); btn[j].Width = 100; btn[j].Height = 25; btn[j].Text = "Button" + j.ToString(); btn[j].BackColor = System.Drawing.Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255), rnd.Next(255)); btn[j].Style.Add(HtmlTextWriterStyle.Margin, "5px"); btn[j].Style.Add(HtmlTextWriterStyle.FontStyle,"15px"); this.form1.Controls.Add(btn[j]); btn[j].Click += new EventHandler(halil); j++; } this.form1.Controls.Add(new LiteralControl("<br/>")); } }

    protected void halil(object tiklananObje, EventArgs e) { Response.Write(((Button)tiklananObje).Text + "'e tıklandı. Arka plan rengi : " + ((Button)tiklananObje).BackColor.ToString()); }

    -----------------------------------------------------------------------------------------------------------

    Bu kodlar ile oluşturulan 25 adet buton var. şimdi herhangi bir butona tıkladığında buton 15 e tıklandı gibisinden yazı çıkıyor. her buton için kendi numarasını yazıyor butonun. Fakat ben içinden seçtiğim bir kaç butonda farklı yazı çıkmasını istiyorum. mesela 12ye ve 21e tıklanınca "aaaa" yazmasını istiyorum bunu nasıl yapabilirim.

    ikinci sorum ise her buton satırında random olarak seçilen 2 buton olmak üzere farklı mesaj yazdırabilmek mümkün mü ?

    Yani en açık hali şu mayın tarlası oyunu gibi düşünelim. her satırdaki 5  butondan random olarak belirlenen 2 taneye basildiğinda mayına bastınız uyarısı verecek ve o mayına bastınız mesajı verecek olan butonlara basıldığında mayınlı butonların yeri random olarak değişecek ve her satırda yine 2 adet olacak şekilde (mayına bastınız mesajı verdirmeyen butonlara basıldığında tüm butonlar aynı yerlerinde kalıp devam edecek.). 

    1. soru çok daha önemli tabiki ama ikinci sorunun cevabını alabilirsem de çok iyi olacak.

    İlgilenen herkese şimdiden çok teşekkürler...

    6 Mart 2014 Perşembe 00:41

Yanıtlar

  • int id = Convert.ToInt32( ((Button)tiklananObje).ID.Remove(0,4) );
    

    ile tiklanan butonun ID nosunu alirsin. Ona gore istedigini yaparsin.

    Ikinci sorun icin ise, Tag propertysini kullanabilirsin. Bunu Random() ile birlestirerek istedigin butonlari random secip tag'ina yazarsin. Kontrol ederken de tag'a bakarsin.

    Herseyi boyle butonlara yuklemek yerine bir struct[] yapip durumlari onda tutsan daha iyiydi.

    Not: Kodun sanki minifikasyon yapilan JavaScript kodu gibi formatsiz ve okunmasi zor oldugundan kodun uzerinden birsey soylemek de zor. Kodunda gene de  cok gereksiz iki dongu var gibi geldi.

    • Yanıt Olarak İşaretleyen Özgür Tekbaş 12 Mart 2014 Çarşamba 11:43
    6 Mart 2014 Perşembe 11:00