【问题标题】:Preventing a TreeView from changing SelectedNode until a ListView getting populated防止 TreeView 更改 SelectedNode 直到填充 ListView
【发布时间】:2012-01-11 22:38:11
【问题描述】:

我的 winforms 应用程序中有一个 TreeView 和一个 ListView。问题是当用户从树视图中选择一个节点时,列表视图需要一段时间才能被填充(由于大量计算!)。

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

【问题讨论】:

  • 听起来很可疑。编写一个适应用户的用户界面,而不是适应您的代码的用户界面。 BackgroundWorker.CancelAsync() 可以帮助您做到这一点。
  • 是的,我知道,但我还没有那么先进:P

标签: c# winforms events listview treeview


【解决方案1】:

您可以使用一个标志来跟踪您的 ListView 填充状态并使用 TreeView 的 BeforeSelect 事件。如果您的 ListView 仍在填充,请让 BeforeSelect 事件处理程序取消该事件:

    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; 
    }

【讨论】:

    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多