İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

c# string veriyle button properties

BobRoss19.10.20157 cevap2.368 görüntüleme
2012'den beri42 mesaj
#1
Merhaba,

c# ile sabit bir oyun tasarlıyorum. Örnek kodlarım aşağıdadır. b50 adında ki butonun adından b'yi çıkartarak 50 adını int'e çevirip 3 ile topluyorum. Çıkan sonuca b ekliyorum. "b53" isimli bir butonum daha var. Bu buton üzerinden işlem yapmak istiyorum. Örnegin backcolor'ını değiştirmek istiyorum. Bu nasıl sağlayabilirim.

Örnek kod :

int hesap;
int sağ = 3;
string sagString;

private void b50_click(object sender, EventArgs e)
{
    int gelenSayi = Int32.Parse(b50.Name.Substring(1));
    hesap = gelenSayi + sağ;

    if(hesap > 0)
        sagString = "b" + hesap.ToString();
    else
    hesap = 0; 
}
Cevaplar
2007'den beri28 mesaj
#2
"b53" butonumuzun adı olsun. backcolor'ını Mavi yapmak istiyorsak, butonun "BackColor" özelligine "Color" sınıfından aşağıdaki örnekteki gibi atama yapabilirsiniz.

>>
b53.BackColor=Color.Blue; <<
BobRoss Konuyu açan
2012'den beri42 mesaj
#3
tabi ki öyle. örnek kodda ki verilerin dışardan geldiğini düşünün. vermiş olduğum bilgileri b50 harici hepsi bir metotla dönüyo. yani b53'ü ben örnek olsun diye yazdım. Bu b1 de olabilir b1500 de, sistem ne döndürürse. Sormak istediğim b53 verisi şu anda için string bir bilgi. Bu string bilgiyi buton adı olarak kullanıp propertieslerine nasıl ulaşırım.
2007'den beri28 mesaj
#4
Ne dediğinizi değil de ne yapmak istediğinizi tam olarak anladığımı söyleyemiyeceğim. Keşke yapmak istediğiniz şeyin kısa bir senaryosunu yazsaydınız. Bazı kişiler algılamada zorlanabiliyor.

Anladığıma göre x bir butonun bilgilerine ulaşmak yada özelliklerini değiştirmek istiyorsak. Buton adını içeren String bilgiyi "Button" parametresi alan bir "void" metoda gönderebiliz.

[COLOR=#191970][B]metot[/B][/COLOR](stringDeger);

[COLOR=#ff0000]void[/COLOR] [COLOR=#191970][B]metot[/B][/COLOR](Button xButton)
{
       MessageBox.[COLOR=#191970][B]Show[/B][/COLOR](xButton.Name);
}
BobRoss Konuyu açan
2012'den beri42 mesaj
#5
Evet anladığınız gibi aşağı yukarı.Denedim bunu, metodu çağırırken argüman hatası veriyor.

String veriyi button sınıfına çeviremezsin diyor.
2007'den beri28 mesaj
#6
Kusura bakmayın benim hatam. String değerden bahsederken Button parametresi nereden çıktı değil mi? Aşağıdaki örnek çalışır.

[COLOR=#191970][B]metot[/B][/COLOR](stringDeger);

[COLOR=#ff0000]void[/COLOR] [COLOR=#191970][B]metot[/B][/COLOR](String stringDeger)
       {
           Button buton = [COLOR=#008b8b][B]new[/B][/COLOR] [COLOR=#191970][B]Button[/B][/COLOR]();
           buton.Name = stringDeger;
           MessageBox.[COLOR=#191970][B]Show[/B][/COLOR](buton.Name);
       }
2007'den beri28 mesaj
#7
Yukarıdaki kodu değerlendirince bir referans eksikliği olduğunu fark ettim. Aşağıdaki düzeltme test edilmiştir.

[COLOR=#191970][B]method[/B][/COLOR](stringDeger);

[COLOR=#0000ff][B]public[/B][/COLOR] [COLOR=#ff0000]void[/COLOR] [COLOR=#191970][B]method[/B][/COLOR]([COLOR=#ff0000]string[/COLOR] stringDeger)
{
    Button xButton = [COLOR=#008b8b][B]new[/B][/COLOR] [COLOR=#191970][B]Button[/B][/COLOR]();
    xButton.Name = stringDeger;
            
    [COLOR=#0000ff][B]foreach[/B][/COLOR] (Control element [COLOR=#0000ff][B]in[/B][/COLOR] Controls) 
    {
        [COLOR=#0000ff][B]if[/B][/COLOR] (element [COLOR=#008b8b][B]is[/B][/COLOR] Button) 
        {
            [COLOR=#0000ff][B]if[/B][/COLOR] (element.Name == xButton.Name) 
            {
                xButton=(Button)element;
                [COLOR=#000080]break[/COLOR];
            }
        }
    }
            
    MessageBox.[COLOR=#191970][B]Show[/B][/COLOR](xButton.Name); 
}
        
BobRoss Konuyu açan
2012'den beri42 mesaj
#8
Artal73,

Çok teşekkür ederim.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.