private void function(object sender, EventArgs e)
是否可以在不使用变量的情况下获取名称?
if(sender.getType().Name == "Button") {
Button btn = sender as Button;
ObjName = btn.Name
}
if(sender.getType().Name == "CheckBox") {
CheckBox cbx= sender as CheckBox;
ObjName = cbx.Name
}
我有一个可以处理许多不同对象类型的函数,我唯一需要的是Name。
答案 0 :(得分:4)
将其强制转换为基类型Control
var name = ((Control)sender).Name
答案 1 :(得分:0)
另外,如果基本类型不同,您可以按如下方式进行反思:
private void function(object sender)
{
if (sender != null && sender.GetType().GetProperty("Name") != null)
{
var val = sender.GetType().GetProperty("Name").GetValue(sender);
}
}
答案 2 :(得分:0)
如果您不能使用通用基本类型,例如您正在处理来自WinForms&amp ;;的项目。 WPF同时,您可以使用反射来检查项目是否具有名称属性,然后是否确实返回该值。
.Replace
答案 3 :(得分:0)
此模式比检查类型名称更常见:
var btn = sender as button;
if (btn != null) // it's a button
{
//...
return;
}
var chkbx = sender as checkbox;
if (chkbx != null) // it's a checkbox
{
//...
return;
}