我有多个控件共享相同的事件处理程序。而不是写一系列的
if(sender == specific_control)
{
// do something
}
我是否可以用开关语句或类似的方法来代替?
当我输入switch(sender)
时,我会收到一条错误消息,上面写着
开关表达式或大小写标签必须是bool、char、string、intergral、enum或相应的可空类型。
发布于 2015-07-07 21:28:04
如果希望事件处理程序根据引发事件的控件执行不同的操作,为什么要对每个控件使用相同的处理程序?只需给每个控件赋予自己的处理程序方法即可。
如果在处理所有不同事件时有一些通用代码要执行,请将其放入一个方法中,该方法可以由各种事件处理程序方法调用。
如果上述建议似乎不适用于您的方案,请改进您的问题,以便清楚为什么它不是。一定要包括清楚说明解释的 code example。
发布于 2015-07-07 21:31:54
如果这些控件的类型相同,则可以使用控件的“类型”生成开关语句:
//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;
}
https://stackoverflow.com/questions/31284024
复制相似问题