Completed
Last Updated: 15 Feb 2017 13:24 by ADMIN
ADMIN
Hristo
Created on: 25 Jan 2017 11:06
Category: Map
Type: Bug Report
1
FIX. RadMap - NullReference exception when the SearchError event is raised for the BingRestMapProvider
How to reproduce: check the attached video

Workaround: create a custom MapSearchBarElement
public class MyRadMap : RadMap
{
    public override string ThemeClassName
    {
        get
        {
            return typeof(RadMap).FullName;
        }
    }
 
    protected override RadMapElement CreateMapElement()
    {
        return new MyRadMapElement();
    }
}
 
public class MyRadMapElement :  RadMapElement
{
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(RadMapElement);
        }
    }
 
    protected override MapSearchBarElement CreateSearchBarElement()
    {
 
        return new MyMapSearchBarElement(this);
    }
}
 
public class MyMapSearchBarElement : MapSearchBarElement
{
    public MyMapSearchBarElement(MyRadMapElement mapElement)
        : base(mapElement)
    { }
 
    protected override Type ThemeEffectiveType
    {
        get
        {
            return typeof(MapSearchBarElement);
        }
    }
 
    protected override void SearchProviderSearchError(object sender, SearchErrorEventArgs e)
    {
        IMapSearchProvider provider = sender as IMapSearchProvider;
        provider.SearchCompleted -= SearchProviderSearchCompleted;
        provider.SearchError -= SearchProviderSearchError;
 
        if (this.ElementTree != null)
        {
            UnsubscribeToTextBoxEvents(this.SearchTextBoxElement);
            RadMessageBox.SetThemeName(this.ElementTree.ThemeName);
            RadMessageBox.Show(e.Error.Message);
            SubscribeToTextBoxEvents(this.SearchTextBoxElement);
        }
    }
 
    protected override void SubscribeToTextBoxEvents(RadTextBoxElement textBox)
    {
        textBox.TextChanged += OnSearchTextBoxTextChanged;
        textBox.KeyDown += OnSearchTextBoxKeyDown;
    }
 
    protected override void UnsubscribeToTextBoxEvents(RadTextBoxElement textBox)
    {
        textBox.TextChanged -= OnSearchTextBoxTextChanged;
        textBox.KeyDown -= OnSearchTextBoxKeyDown;
    }
 
    private void OnSearchTextBoxKeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            this.Search(this.SearchTextBoxElement.Text);
        }
    }
}
Attached Files:
0 comments