public void RefreshWeatherItem(WeatherItemEventArgs weatherItemInfo) { try { // Invoke the RefreshInternal through its delegate if (!this.IsDisposed && this.IsHandleCreated) { Invoke(new RefreshWeatherItemHelper(RefreshWeatherItemInvoked), new object[] { weatherItemInfo }); } } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } }
private void RefreshWeatherItemInvoked(WeatherItemEventArgs weatherItemInfo) { ITransformation transform = m_activeView.ScreenDisplay.DisplayTransformation as ITransformation; if (transform == null) { return; } double[] iconDimensions = new double[2]; iconDimensions[0] = (double)weatherItemInfo.IconWidth; iconDimensions[1] = (double)weatherItemInfo.IconHeight; double[] iconDimensionsMap = new double[2]; transform.TransformMeasuresFF(esriTransformDirection.esriTransformReverse, 1, ref iconDimensionsMap[0], ref iconDimensions[0]); m_invalidateExtent.PutCoords(0, 0, iconDimensionsMap[0], iconDimensionsMap[0]); m_point.PutCoords(weatherItemInfo.mapX, weatherItemInfo.mapY); m_invalidateExtent.CenterAt(m_point); m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, m_weatherLayer, m_invalidateExtent); m_activeView.ScreenDisplay.UpdateWindow(); }
/// <summary> /// weather layer ItemAdded event handler /// </summary> /// <param name="sender"></param> /// <param name="args"></param> /// <remarks>gets fired when an item is added to the table</remarks> private void OnWeatherItemAdded(object sender, WeatherItemEventArgs args) { // use the invoke helper since this event gets fired on a different thread m_invokeHelper.RefreshWeatherItem(args); }