获取发送者的元素类型(按钮、图片框等)
Get sender's element type (Button, PictureBox etc..)
我正在为多个元素使用 void。比如按钮、标签、图片框....
但是我需要修改一些发件人的变量。比如name, top, left等等...这是我的代码:
private void FareSurukle(object sender, MouseEventArgs e)
{
MessageBox.Show(((TYPE_COMES_HERE)sender).Name);
}
如果我将 "TYPE_COMES_HERE" 编辑为 PictureBox,它适用于 PictureBox。但它在其他元素上给出了错误。像按钮。
是否可以在不声明类型的情况下获取和修改发送者的变量?或者我可以使用 if 对发件人进行类型检查吗?
您可以尝试对每种类型进行强制转换,如果不行则对其进行处理 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
}
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
}
}
I need to modify some of the sender's properties, such as name, top, left
您不必为此检查确切的类型。您提到的控件都继承自包含所有这些属性的基础 class,恰当地命名为 Control
:
MessageBox.Show(((Control)sender).Name);
我正在为多个元素使用 void。比如按钮、标签、图片框....
但是我需要修改一些发件人的变量。比如name, top, left等等...这是我的代码:
private void FareSurukle(object sender, MouseEventArgs e)
{
MessageBox.Show(((TYPE_COMES_HERE)sender).Name);
}
如果我将 "TYPE_COMES_HERE" 编辑为 PictureBox,它适用于 PictureBox。但它在其他元素上给出了错误。像按钮。
是否可以在不声明类型的情况下获取和修改发送者的变量?或者我可以使用 if 对发件人进行类型检查吗?
您可以尝试对每种类型进行强制转换,如果不行则对其进行处理 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
}
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
}
}
I need to modify some of the sender's properties, such as name, top, left
您不必为此检查确切的类型。您提到的控件都继承自包含所有这些属性的基础 class,恰当地命名为 Control
:
MessageBox.Show(((Control)sender).Name);