Completed
Last Updated: 04 Jul 2014 11:02 by ADMIN
ADMIN
Dess | Tech Support Engineer, Principal
Created on: 27 May 2014 11:39
Category:
Type: Bug Report
0
FIX. RadListView - Changing the Cursor property does not affect the control in DetailsView mode
To reproduce:
1.Add a RadListView and set its ViewType property to ListViewType.DetailsView.
2.Change the RadListView.Cursor property to Cursors.Hand.

As a result the cursor is not applied at all. 

Workaround:
public class CustomRadListView : RadListView
{
    public override string ThemeClassName  
    { 
        get 
        { 
            return typeof(RadListView).FullName;  
        }
    }
    
    public CustomRadListView()
    {
    }

    protected override RadListViewElement CreateListViewElement()
    {
        return new CustomRadListViewElement();
    }
}

public class CustomRadListViewElement : RadListViewElement
{
    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(RadListViewElement);     
        }
    }
    
    public CustomRadListViewElement()
    {
    }

    protected override BaseListViewElement CreateViewElement()
    {
        if (this.ViewType == ListViewType.DetailsView)
        {
            return new CustomDetailListViewElement(this);
        }
        return base.CreateViewElement();
    }
}

public class CustomDetailListViewElement : DetailListViewElement
{ 
    Cursor initialCursor = null;

    protected override Type ThemeEffectiveType     
    { 
        get    
        { 
            return typeof(DetailListViewElement);     
        }
    }

    public CustomDetailListViewElement(RadListViewElement owner) : base(owner)
    {
    }

    protected override bool ProcessMouseUp(MouseEventArgs e)
    {
        if (initialCursor == null)
        {
            initialCursor = this.ElementTree.Control.Cursor;
        }
        bool result = base.ProcessMouseUp(e);
        this.ElementTree.Control.Cursor = initialCursor;
        return result;
    }
    
    protected override bool ProcessMouseMove(MouseEventArgs e)
    {
        if (initialCursor == null)
        {
            initialCursor = this.ElementTree.Control.Cursor;
        }
       
        this.Owner.ColumnResizingBehavior.HandleMouseMove(e.Location);
        DetailListViewHeaderCellElement headerCell =
            this.ElementTree.GetElementAtPoint(e.Location) as DetailListViewHeaderCellElement;

        if (this.Owner.ColumnResizingBehavior.IsResizing)
        {
            return true;
        }
        if (headerCell != null && headerCell.IsInResizeLocation(e.Location))
        {
            this.ElementTree.Control.Cursor = Cursors.SizeWE;
        }
        else
        {
            if (initialCursor != null)
            {
                this.ElementTree.Control.Cursor = initialCursor;
            }
            else
            {
                this.ElementTree.Control.Cursor = Cursors.Default;
            }
        }
    
        return true;
    }
}
0 comments