private void cmbSilahlar_SelectedIndexChanged(object sender, EventArgs e) { if (cmbSilahlar.SelectedIndex < 0) { return; // Herhangi bir şey secilmediğinde calısmayacak ama hata da vermmeyecek. } // cmbye aktardıgım elemanları istediğim islemleri yapabilmek için Silahlar tipinde cagırmalıyım ama biz onları string türünde gonderdiğimiz için burada bir donusume ihtiyacımız olacak.Bunun icin parse metodunu kullandık. Parse metodu bizden typeof ile bir type ve string bir deger istiyor. Ve sonucu object olarak donduruyor. bunun icin cast islemi yaptık. yani basına(Silahlar) yazdık. Silahlar silah = (Silahlar)Enum.Parse(typeof(Silahlar), cmbSilahlar.SelectedItem.ToString()); // secili enumdan hangi enum oldugunu bulma. //1.yontem Silahlar silahb = (Silahlar)cmbSilahlar.SelectedIndex; // enumların index numarası 0 dan baslayıp sıralı oldugu icin bu yontemide kullanabiliriz. cmb den secilen index i silahlar a cast edersek enum u verecektir. byte deger = (byte)silah; // Boyle bir donusum yaparsakta enum degerini byte degere donuşturecektir. switch (silah) // Hangi nesnenin üretilecegine cmb den gelen enum karar verecek. { case Silahlar.Bıçak: seciliSilah = new Bicak(); // gelen deger tipindeki nesneyi üretiyoruz boylece null gelmesinin de önüne geçmiş oluyoruz. break; case Silahlar.USP: seciliSilah = new USP(); break; case Silahlar.Glock: seciliSilah = new Glock(); break; case Silahlar.DesertEagle: seciliSilah = new DesertEagle(); break; case Silahlar.AK47: seciliSilah = new AK47(); break; case Silahlar.M4A1S: seciliSilah = new M4A1S(); break; case Silahlar.ElBombası: seciliSilah = new ElBombasi(); break; case Silahlar.FlashBombası: seciliSilah = new FlashBombasi(); break; default: break; } panelSilah.Controls.Clear(); panelSilah.Controls.Add(seciliSilah.SilahResmi); // Olusturdugumuz panel e enumdan gelen nesnenin resmini ekliyoruz. seciliSilah.SilahResmi.Dock = DockStyle.Fill; //Container icine bir nesne ekledigimizde fill oldugu icin bulundugu yeri kaplayacak. SilahBilgisiGoster(seciliSilah); gb_AtesliSilah.Visible = seciliSilah is IAtesEdebilen; //Buradan true gelmesi halinde gbAteslisilah gözükecek gBYakinSaldiri.Visible = seciliSilah is IVurulabilir; //Buradan true gelmesi halinde gbYakinSaldiri gözükecek gbFirlatilan.Visible = seciliSilah is IFirlatilabilen; //Buradan true gelmesi halinde gbFirlatilan gözükecek }
private void cmbSilahlar_SelectedIndexChanged(object sender, EventArgs e) { if (cmbSilahlar.SelectedIndex < 0) { return; } Silahlar silah = (Silahlar)Enum.Parse(typeof(Silahlar), cmbSilahlar.SelectedItem.ToString()); //silah.ToString(); //string silah adını verir //Silahlar silahb = (Silahlar)cmbSilahlar.SelectedIndex; //byte deger = (byte)silah; // Enum ın integer değerini verir switch (silah) { case Silahlar.Bıçak: seciliSilah = new Bicak(); break; case Silahlar.USP: seciliSilah = new USP(); break; case Silahlar.Glock: seciliSilah = new Glock(); break; case Silahlar.DesertEagle: seciliSilah = new DesertDeagle(); break; case Silahlar.AK47: seciliSilah = new AK47(); break; case Silahlar.M4A1S: seciliSilah = new M4A1S(); break; case Silahlar.AWP: seciliSilah = new AWP(); break; case Silahlar.ElBombası: seciliSilah = new ElBombasi(); break; case Silahlar.FlashBombası: seciliSilah = new FlashBombasi(); break; default: throw new ArgumentOutOfRangeException(); } panelSilah.Controls.Clear(); panelSilah.Controls.Add(seciliSilah.SilahResmi); seciliSilah.SilahResmi.Dock = DockStyle.Fill; SilahBilgisiGöster(seciliSilah); gbAtesliSilah.Visible = seciliSilah is IAtesEdebilen; gbYakinSaldiri.Visible = seciliSilah is IVurulabilir; gbFirlatilan.Visible = seciliSilah is IFirlatilabilen; }