获取发件人的元素类型(Button,PictureBox等..)

时间:2016-04-03 10:28:09

标签: c# types void sender

我正在为多个元素使用void。如按钮,标签,图片盒......

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

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

如果我将“TYPE_COMES_HERE”编辑为PictureBox,它适用于PictureBox。但它给其他元素带来了错误。像按钮一样。

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

3 个答案:

答案 0 :(得分:4)

  

我需要修改一些发件人的属性,例如name,top,left

您无需检查确切的类型。您提到的控件都继承自包含所有这些属性的基类,名为Control

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

答案 1 :(得分: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
}

答案 2 :(得分: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
     }
}