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