2016-04-03 31 views
0

我对多个元素使用了void。如按钮,标签,pictureboxes ....获取发件人的元素类型(Button,PictureBox等..)

但我需要修改一些发件人的变量。如姓名,上,左等......这是我的代码:

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

如果我编辑“TYPE_COMES_HERE”,以图片框,它适用于图片框。但它会给其他元素带来错误。像按钮一样。

是否可以在不声明其类型的情况下获取并修改发件人的变量?或者,我可以使用if进行发件人类型检查吗?

回答

4

我需要修改一些发件人的属性,如姓名,顶部,左

您不必检查确切的类型。您提到的控件都从包含所有这些属性的基类继承而来,适当地命名为Control

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

谢谢!它和我想要的完全一样。我也想过这个,但我不知道他们被称为“控制”。我试过其他的东西,比如“Type,Element”... – Eren

+0

你可以[在MSDN上检查继承树](https://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox( v = vs.110)的.aspx)。 – CodeCaster

2

您可以尝试铸造每种类型,如果没有null用它做什么:

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 
    } 
}