示例#1
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            HideTxtBox();

            if (e.Button == MouseButtons.Left)
            {
                if (e.Y > headerBuffer) //���������������ѡ�������¼�
                {
                    //����ѡ��״̬
                    if (selectedSubject != null)
                    {
                        //�Ƿ�����չ��ť
                        int plus = PlusInArea(e, selectedSubject);
                        if (plus > 0)
                        {
                            SubjectBase subject = null;
                            subject = new TitleSubject(selectedSubject, plus);
                            if (subject != null)
                            {
                                subjectNodes.Add(subject);
                                selectedSubject = subject;
                            }
                            Invalidate();
                            return;
                        }

                        if (e.Clicks == 2)
                        {
                            //�Ƿ�������
                            if (TitleInArea(e, selectedSubject))
                            {
                                txtNode.Tag = selectedSubject;
                                ShowTxtBox();
                                return;
                            }
                        }
                    }

                    //�Ƿ����۵���ť
                    SubjectBase collaspSubject = CollaspeInArea(e);
                    if (collapseSubject != null)
                    {
                        collapseSubject.CollapseChildSubject(!collapseSubject.Expanded);
                        Invalidate();
                        return;
                    }

                    //�Ƿ�ѡ������
                    selectedSubject = null;
                    SubjectBase subjectNode = SubjectInArea(e);
                    if (subjectNode != null)
                    {
                        selectedSubject = subjectNode;
                        if (SubjectClick != null)
                            SubjectClick(this, subjectNode);

                        if (linkSubject != null)
                        {
                            subjectNode.LinkSubject = linkSubject;
                            linkSubject = null;
                        }

                        if (openLinkSubject)
                        {
                            linkSubject = subjectNode;
                            openLinkSubject = false;
                        }

                        //��ק��ʼ
                        dragSubject = subjectNode.DeepClone();
                        dragSubject.TranslateLightColor();
                        dragStartPx = e.X;
                        dragStartPy = e.Y;
                    }
                }
                Invalidate();

            }
        }