我有ComboBoxs,每个都有其SelectedIndexChanged事件。我不想编写每个ComboBox的事件,但我想编写一个事件方法,以检查对事件的哪个ComboBox调用,并让控件为每个Combobox做特定的方法。我搜索并这样写:
private void eventmethod(object sender, EventArgs s)
{
ComboBox cb = sender as ComboBox;
if (cb != null & cb.Name.Equals("combobox1"))
{
method1();
}
else if (cb != null & cb.Name.Equals("combobox2"))
{
method2();
}
}
有更有效的检查方法吗?
除非每个ComboBox.SelectedIndexChanged事件都执行相同的操作,否则该方法将违反单一职责原则(SRP)。
始终最好为每个控件都配备一个事件处理程序,以便可以轻松区分特定行为。如果为每个ComboBox赋予了特定的行为,并且它们也具有共同的行为,则可以使用辅助方法来执行共同的任务。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
doesCommonTasksToBePerformedThroughAHelperMethod();
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) {
// Does specific tasks
doesCommonTasksToBePerformedThroughAHelperMethod();
}
private void doesCommonTasksToBePerformedThroughAHelperMethod() {
// Perform common tasks
}
这是首选做法。
否则,请检查控件本身。
var cb = sender as ComboBox;
if (cb == null) return;
switch(cb) {
case cb.Equals(comboBox1):
// Do something
break;
case cb.Equals(comboBox2):
// Do something
break;
}
switch语句很少是一件好事。这里是有关该主题的一些链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句