我有多个控件共享同一个事件处理程序。而不是写一系列的
if(sender == specific_control)
{
// do something
}
有没有办法可以使用switch语句或类似的东西?
当我输入switch(sender)
时,收到一条错误消息
switch表达式或case标签必须是bool,char,string,intergral,enum或相应的可空类型。
答案 0 :(得分:0)
如果您希望事件处理程序根据引发事件的控件执行不同的操作,为什么要为每个控件使用相同的处理程序?只需为每个控件提供自己的处理程序方法。
如果在处理所有不同事件时要执行一些公共代码,请将 放入可由各种事件处理程序方法调用的单个方法中。
如果上述建议似乎不适用于您的方案,请改进您的问题,以便明确其中的原因。请务必加入明确说明解释的a good, minimal, complete code example。
答案 1 :(得分:0)
如果这些控件的类型相同,那么你可以使用" Type"控件生成switch语句:
//Just a snippet, you can use the FullName or Name to determine which
//control it belongs to...
Type t = (sender).GetType();
switch (t.FullName)
{
case "Namespace.Control1":
break;
case "Namespace.Control2":
break;
}