protected override void OnItemActivate(EventArgs e) { if (Control.MouseButtons == MouseButtons.Left) { Point pt = base.PointToClient(Control.MousePosition); DataTreeListViewItem dataTreeListViewItem = (DataTreeListViewItem)base.GetItemAt(pt.X, pt.Y); if (dataTreeListViewItem != null && dataTreeListViewItem.ChildrenItems.Count > 0 && !dataTreeListViewItem.IsLeaf && dataTreeListViewItem.GetPlusMinusButtonBound().Contains(pt)) { return; } } base.OnItemActivate(e); }
protected override void OnMouseDown(MouseEventArgs e) { if (e.Button == MouseButtons.Left) { DataTreeListViewItem dataTreeListViewItem = base.GetItemAt(e.X, e.Y) as DataTreeListViewItem; if (dataTreeListViewItem != null && !dataTreeListViewItem.IsLeaf && dataTreeListViewItem.ChildrenItems.Count > 0 && dataTreeListViewItem.GetPlusMinusButtonBound().Contains(e.X, e.Y)) { dataTreeListViewItem.IsExpanded = !dataTreeListViewItem.IsExpanded; } } base.OnMouseDown(e); }
private void DrawPlusMinusButtons() { using (Graphics graphics = base.CreateGraphics()) { foreach (object obj in base.Items) { DataTreeListViewItem dataTreeListViewItem = (DataTreeListViewItem)obj; Rectangle bounds = dataTreeListViewItem.Bounds; if (bounds.Bottom >= base.ClientRectangle.Top) { bounds.Width = base.Columns[0].Width; bounds.Intersect(base.ClientRectangle); if (!dataTreeListViewItem.IsLeaf && !bounds.IsEmpty && dataTreeListViewItem.ChildrenItems.Count > 0) { Region clip = graphics.Clip; graphics.SetClip(LayoutHelper.MirrorRectangle(bounds, this)); DataTreeListView.DrawPlusMinusButton(graphics, LayoutHelper.MirrorRectangle(dataTreeListViewItem.GetPlusMinusButtonBound(), this), !dataTreeListViewItem.IsExpanded); graphics.Clip = clip; } else if (bounds.Top > base.ClientRectangle.Bottom) { break; } } } } }