ThinkGeo.com    |     Documentation    |     Premium Support

The input double value is out of range. Parameter name: screenWidth

I am getting the following error when our application is minimized.  



The error reads: "The input double value is out of range.  Parameter name: screenWidth"



The code that it fails on is being called when our timer elapses and updates our vehicle positions.  When you have "Follow Mode" on to follow a specific vehicle the code keeps the vehicle centered using this code:


Dim point As PointShape = New PointShape(objTrucksDTO.LONGITUDE, objTrucksDTO.LATITUDE)
 
mapCtrl.CenterAt(point)

The value of the PointShape is {-74.03665,41.48817,0} during this test.  Again, this only fails when the screen is minimized.

Hi Dave,



I tried to reproduce that but it failed.



Could you please see my attached sample and see whether I missed anything?



Regards,



Don

001_TestProject.zip (10.2 KB)

I have modified your project to more closely represent our project.  The new Project is attached.



I made the following changes:




        
  1. Main form is now an MDI Parent form.  The Map is docked as the MDI background.

  2.     
  3. I removed the automatic Minimization from the Map Click event. You will need to click the map to activate the timer then minimize the form.

  4.     
  5. I added a map.refresh to the timer_tick event.  In our case we are refreshing only the truck layer overlay however it works the same.

  6.     
  7. I added a try/catch block in the timer_tick event to show the error message.


Using this project I was able to 100% duplicate the error message. "The input double value is out of range. Parameter name: screenWidth"

002_TestProject.zip (14.2 KB)

Hi Dave, 
  
 Thanks for let us know your question, your project works well here. 
  
 I asked our developer about it today, they think it’s not a bug. The exception “The input double value is out of range” is thrown by our code, which mainly for avoid invalid parameter “screenWidth” and “screenHeight” be passed into map. For our map control, we cannot know the status of user’s form, we can only validate the passed in parameter and let user’s code know it via exception. 
  
 So you should want to catch the exception and handle it in your code, I think your code could be like this: 
  
   if (winformsMap1.Width > 0 && winformsMap1.Width > 0)
                {
                    winformsMap1.CenterAt(new PointShape(-74.03665, 41.48817));

                    winformsMap1.Refresh();
                }
 
  
 Regards, 
  
 Don

Thank you Don.  I will handle it in our code.  I had assumed it may be a bug in your code as it would only occur when the map was used on an MDI Parent Form.

Hi Dave, 
  
 Thanks for let us know it, I will ask our developer to review that and see whether we can enhancement it. 
  
 Because the Width and Height value is directly get from Control class, so I think that’s maybe related with WPF controls, if it only occur when MDI Parent Form, that maybe means when minimized mode only this type will make the controls height equal zero. 
  
 Regards, 
  
 Don