diff --git a/Aga.Controls/Tree/AutoRowHeightLayout.cs b/Aga.Controls/Tree/AutoRowHeightLayout.cs index c7889db..0a23a20 100644 --- a/Aga.Controls/Tree/AutoRowHeightLayout.cs +++ b/Aga.Controls/Tree/AutoRowHeightLayout.cs @@ -8,8 +8,8 @@ namespace Aga.Controls.Tree public class AutoRowHeightLayout: IRowLayout { private DrawContext _measureContext; - private TreeViewAdv _treeView; - private List _rowCache; + private readonly TreeViewAdv _treeView; + private readonly List _rowCache; public AutoRowHeightLayout(TreeViewAdv treeView, int rowHeight) { @@ -20,13 +20,7 @@ public AutoRowHeightLayout(TreeViewAdv treeView, int rowHeight) _measureContext.Graphics = Graphics.FromImage(new Bitmap(1, 1)); } - private int _rowHeight; - public int PreferredRowHeight - { - get { return _rowHeight; } - set { _rowHeight = value; } - } - + public int PreferredRowHeight { get; set; } public int PageRowCount { @@ -117,6 +111,8 @@ private int GetRowHeight(int rowNo) public int GetRowAt(Point point) { int py = point.Y - _treeView.ColumnHeaderHeight; + if (py < 0) // Header column + return -1; int y = 0; for (int i = _treeView.FirstVisibleRow; i < _treeView.RowCount; i++) { diff --git a/Aga.Controls/Tree/TreeViewAdv.Draw.cs b/Aga.Controls/Tree/TreeViewAdv.Draw.cs index 60f8662..790435c 100644 --- a/Aga.Controls/Tree/TreeViewAdv.Draw.cs +++ b/Aga.Controls/Tree/TreeViewAdv.Draw.cs @@ -29,6 +29,10 @@ public void AutoSizeColumn(TreeColumn column) if (nc.ParentColumn == column) w += nc.GetActualSize(node, _measureContext).Width; } + if (column.Index == 0) + { + w += node.Level * _indent + LeftMargin; + } res = Math.Max(res, w); } } diff --git a/Aga.Controls/Tree/TreeViewAdv.Input.cs b/Aga.Controls/Tree/TreeViewAdv.Input.cs index ab38f8c..4a04974 100644 --- a/Aga.Controls/Tree/TreeViewAdv.Input.cs +++ b/Aga.Controls/Tree/TreeViewAdv.Input.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Windows.Forms; using System.Drawing; using Aga.Controls.Tree.NodeControls; @@ -453,6 +451,8 @@ private void DragTimerTick(object state) private void DragAutoScroll() { _dragAutoScrollFlag = false; + if (_vScrollBar.Minimum == _vScrollBar.Maximum) + return; Point pt = PointToClient(MousePosition); if (pt.Y < 20 && _vScrollBar.Value > 0) _vScrollBar.Value--;