防止TreeView改变SelectedNode,直到ListView被填充

本文关键字:ListView 填充 直到 TreeView 改变 SelectedNode 防止 | 更新日期: 2023-09-27 18:16:26

我有一个TreeViewListView在我的winforms应用程序。问题是当用户从treeview中选择一个节点时,listview将需要一段时间来填充(由于繁重的计算!)。

现在我想防止任何节点被选中,除非listview已经被填充。原因是,如果您一直使用鼠标或通过点击或按住箭头键快速选择节点,则不会填充列表。由于这是为了监视数据使用情况,所以我希望防止这种行为。做这样的事情有什么可用的选择?

防止TreeView改变SelectedNode,直到ListView被填充

你可以使用一个标志来跟踪你的ListView填充状态,并使用TreeView的beforeelect事件。如果你的ListView仍然在被填充,有beforeelect事件处理程序取消事件:

    private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
    {
        if (_loading)
            e.Cancel = true; 
    }
    bool _loading = false; 
    void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        _loading = true;
        // ListView populating
        _loading = false; 
    }