2016-04-03 8 views
0

Birden çok öğe için geçersiz bir boşluk kullanıyorum. Düğmeler, etiketler, görüntü kutuları .... gibi.Gönderenin öğe tipi (Düğme, Resim Kutusu vb.) Alın

Ancak, gönderenin bazı değişkenlerini değiştirmem gerekiyor. i PictureBox "TYPE_COMES_HERE" düzenlerseniz

private void FareSurukle(object sender, MouseEventArgs e) 
{ 
    MessageBox.Show(((TYPE_COMES_HERE)sender).Name);  
} 

, bu PictureBox üzerinde çalışır: Böyle vb adı, üst, sol olarak ... Bu benim kodudur. Ama diğer elementlerde hata veriyor. Düğmeler gibi.

Gönderenin değişkenlerini türünü bildirmeden almak ve değiştirmek mümkün mü? Ya da eğer varsa, gönderenin tipini kontrol edebilir miyim?

cevap

4

Böyle ad, üst olarak gönderenin özelliklerinin bazılarını değiştirmeniz gerekir,

sol

Bunun için tam türü incelemek zorunda değilsiniz. Tüm söz denetimleri uygun bir şekilde Control adında, bütün bu özellikleri içeren bir temel sınıfından:

MessageBox.Show(((Control)sender).Name); 
+0

Teşekkür! Tam istediğim gibi çalışıyor. Bunu da düşündüm ama "Kontrol" olarak adlandırıldığını bilmiyordum. "Type, Element" gibi başka şeyler denedim ... – Eren

+0

[MSDN'de miras ağacını kontrol edebilirsiniz] (https://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox (v = vs.110) .aspx). – CodeCaster

2

Her türüne çevrim denemek ve null değilse onunla bir şeyler yapabilir:

var button = sender as Button; 
if (button != null) 
{ 
    // do something with button 
} 
var pictureBox = sender as PictureBox; 
if (pictureBox != null) 
{ 
    // do something with pictureBox 
} 
0
private void FareSurukle(object sender, MouseEventArgs e) 
{ 
    if (sender is PictureBox) 
    { 
     // do something 
    } 
    else if (sender is Label) 
    { 
     // do something 
    } 
    else if (sender is Button) 
    { 
     // do something 
    } 
} 
İlgili konular