2

我有一个与树视图关联的 contextmenuStrip。

现在,例如,我在树结构中有四个节点,并且选择了节点 4。

行为: ContextMenuStrip - 当您右键单击节点 2 时,该节点被选中,一旦上下文菜单条打开,焦点就会返回节点 4。

使用旧组件“上下文菜单”,此功能可以正常工作,即节点 2 具有焦点,直到上下文菜单打开。

只要上下文菜单打开,我就希望选择节点 2。当上下文菜单关闭时,选择/焦点将返回节点 4。

求请指教。

感谢和最好的问候

4

1 回答 1

1

是的,当在其中一个事件运行时更改焦点时,TreeView 控件非常不稳定。这是它区分 BeforeXxxx 和 AfterXxxx 事件的原因之一。不幸的是,上下文菜单条显示得太早了。解决方案是通过实现 NodeMouseClick 事件自己显示上下文菜单。像这样:

    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
        if (e.Button == MouseButtons.Right) {
            treeView1.SelectedNode = e.Node;
            contextMenuStrip1.Show(treeView1, e.Location);
        }
    }

之后我将由您来恢复焦点。实现它没有多大意义。

于 2010-09-07T15:19:05.400 回答