在TreeNode复选框上双击beavior

gre*_*eth 4 c# checkbox treeview treenode double-click

TreeView到处TreeNodes都有图标和复选框。

我一直在尝试禁用某些对象的checkig / unchecking功能,从而放弃了该BerforeCheck方法中的事件。效果很好,直到我双击复选框:复选框的图像与其实际状态相反(如果状态为,则显示一个复选标记Checked=false)。我试图解决在NodeDoubleClickand BeforeClick方法中手动更改StateImageIndex的问题,但没有成功。

更糟糕的是:我在中添加了第三张图片StateImageList(是的,我也希望复选框也处于三态),但是我还没有使用它(我的代码中从未设置过),并且第三张图片被设置为当前状态双击后的框(此时我无法确定明确的行为)。

我怎样才能最好地使其如预期的那样工作,最糟糕的是禁用复选框的双击?谢谢。

PS:这个问题已经被提出了,但是没有答案...

小智 5

试试这个.. :)为我工作

public class NewTreeView : TreeView
    {
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x203)
                m.Result = IntPtr.Zero;
            else
                base.WndProc(ref m);
        }
    }
Run Code Online (Sandbox Code Playgroud)