-1

次のようなコードがあります。

private void treeview1_AfterCheck(object sender, TreeViewEventArgs e)
{
    // I tried this, but not helped
    // treeview1.BeginUpdate(); 

    if (e.Node.Level == 0)
    {
        foreach (TreeNode item in e.Node.Nodes)
        {
            item.Checked = e.Node.Checked;
        }
    }

    // this is a method that executes slow enough, 
    // that I can click multiple times before it ends
    RefreshListOfSelectedItems(); 

    // I tried this, but not helped
    // treeview1.EndUpdate();
 }

基本的に-これは「チェック済み」状態を子ノードにコピーすることになっていますが、問題は、チェックボックスを十分に速くクリックすると、イベントハンドラーの実行がクリックできるよりも遅いため、すべてが台無しになることです。

4

1 に答える 1

0
    void checkChildren(TreeNode node)
    {
        foreach (TreeNode tn in node.Nodes)
            tn.Checked = true;
    }

    //After check event for treeView
    void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
        if (e.Node.Checked) checkChildren(e.Node);
    }

私はこれをチェックし、子供とそのすべての子供のために働いています。

于 2013-09-25T20:42:12.980 に答える