代码之家  ›  专栏  ›  技术社区  ›  Bruno

停止两个触发对方事件的控件

  •  0
  • Bruno  · 技术社区  · 16 年前

    假设我有一个带有两个选项卡的TabControl和一个在根节点上有两个节点的TreeView。

    所以我简单地用TreeView_AfterSelect和TabControl_SelectedIndexChanged编码了这个。

    如何避免两个控件之间的“竞争条件”,因为它们会触发彼此的事件?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Josh    16 年前

    只需签入每个事件,以确保尚未选择要选择的节点/选项卡。这实际上不是“种族状况”。比赛条件是两个项目的顺序不能保证。

    例如:

    private void MyTreeView_AfterSelect (object sender, EventArgs e) {
        if (MyTreeView.SelectedNode == node2 && MyTab.SelectedIndex != 1 ) {
            MyTab.SelectedIndex = 1;
        }
    }
    
        2
  •  0
  •   Aaron McIver    16 年前