检查哪个对象调用事件方法

witoong623

我有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语句很少是一件好事。这里是有关该主题的一些链接。

  1. 如何解释为什么开发人员应避免使用case语句并创建一些新类?
  2. 重构Switch语句
  3. 切换语句

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Bootstrap面板上调用事件展开

来自分类Dev

如何调用事件?

来自分类Dev

检查从哪个线程调用方法

来自分类Dev

检查哪个对象调用事件方法

来自分类Dev

C#调用事件

来自分类Dev

一次通用事件调用?

来自分类Dev

调用方法后的调用事件

来自分类Dev

如何从其他方法调用事件方法?

来自分类Dev

用JavaScript创建和调用事件

来自分类Dev

直接调用事件处理程序

来自分类Dev

调用事件,h(args)与EventName?.Invoke()

来自分类Dev

从主函数调用事件

来自分类Dev

哪个UserControl调用事件MouseEnter?

来自分类Dev

如何获取调用事件的BrowserWindow实例?

来自分类Dev

通过showInputDialog调用事件

来自分类Dev

用于检查哪个对象实例化函数调用的复杂测试

来自分类Dev

在函数C#中调用事件

来自分类Dev

删除调用事件的QML对象时崩溃

来自分类Dev

取消订阅后调用事件

来自分类Dev

在UI上调用事件方法

来自分类Dev

使用事件触发器时,不会触发Slider Thumb.DragStarted事件或调用方法

来自分类Dev

jQuery滑块避免过快调用事件

来自分类Dev

未调用事件侦听器

来自分类Dev

调用方法后的调用事件

来自分类Dev

使用事件对象调用JavaScript鼠标事件

来自分类Dev

在Google脚本中调用事件的正确方法是什么?

来自分类Dev

如何在jQuery中检测触发方法调用事件

来自分类Dev

如何使用事件总线从不同的文件调用方法

来自分类Dev

如何在 ngOnInit 中调用事件方法