public ReorderColumnState(TreeViewAdv tree, TreeColumn column, Point initialMouseLocation)
			: base(tree, column)
		{
			_location=new Point(initialMouseLocation.X+Tree.OffsetX, 0);
			_dragOffset=tree.GetColumnX(column)-initialMouseLocation.X;
			_ghostImage=column.CreateGhostImage(new Rectangle(0, 0, column.Width, tree.ColumnHeaderHeight), tree.Font);
		}
		public AutoRowHeightLayout(TreeViewAdv treeView, int rowHeight)
		{
			_rowCache=new List<Rectangle>();
			_treeView=treeView;
			PreferredRowHeight=rowHeight;
			_measureContext=new DrawContext();
			_measureContext.Graphics=Graphics.FromImage(new Bitmap(1, 1));
		}
		public NormalInputState(TreeViewAdv tree)
			: base(tree)
		{
		}
		public InputState(TreeViewAdv tree)
		{
			_tree=tree;
		}
		public ClickColumnState(TreeViewAdv tree, TreeColumn column, Point location)
			: base(tree, column)
		{
			_location=location;
		}
		public IncrementalSearch(TreeViewAdv tree)
		{
			_tree=tree;
		}
		public ResizeColumnState(TreeViewAdv tree, TreeColumn column, Point p)
			: base(tree, column)
		{
			_initLocation=p;
			_initWidth=column.Width;
		}
		public InputWithShift(TreeViewAdv tree)
			: base(tree)
		{
		}