Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
974 views
in Technique[技术] by (71.8m points)

c# - TreeView ignore double click only at checkbox

I have a treeview with checkbox, I'm trying to disable the double click only when this is done in the checkbox.

I found a way to totally disable the double click but it was not what I wanted.

I appreciate if you can help me.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I found this question when googling for the same bug. The problem with NoodleFolk's solution is that it disables expanding the three by double clicking on an item. By combining NoodleFolk's answer with john arlens answer, you would get something like this:

class NewTreeView : TreeView
{
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x203) // identified double click
        {
            var localPos = PointToClient(Cursor.Position);
            var hitTestInfo = HitTest(localPos);
            if (hitTestInfo.Location == TreeViewHitTestLocations.StateImage)
                m.Result = IntPtr.Zero;
            else
                base.WndProc(ref m);
        }
        else base.WndProc(ref m);
    }
}

I (quickly) tested this solution, and it seems to work.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...