I cannot cast AxMapWinGIS.AxMap to MapWindow.Interfaces.IMapWin.
dear all
I am using AxMap as a .Net forms application. I cannot cast AxMapWinGIS.AxMap to MapWindow.Interfaces.IMapWin. How can I get a handle to an IMapWin object from AxMap?
the error is the following:
Nullreferenceexception was unhandled
Object reference not set to an instance of an object.
With the App is possible to add the grid to the map and legend, then with the grids in the map I click in a button to open a new window for map calculation (the code bellow is for the new window "MapCalc"). But gives an error in a line that tries to read what I have in the map.
For Each lay In mMap.Layers
this is the code to open the window .
Code:
Private mapWin As MapWindow.Interfaces.IMapWin
Private Sub btnloadmapcalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnloadmapcalc.Click
Dim NewMapCalc As MapCalc = New MapCalc(mapWin)
NewMapCalc.ShowDialog()
End Sub
this is the code of the window (for calculating)
Code:
Imports System.IO
Imports System.Drawing.Design
Imports System.Windows.Forms.Design
Imports System.Windows.Forms
Imports MapWindow.Interfaces
Imports MapWinGIS
Public Class MapCalc
'MAP CALCULATOR CODE
Inherits System.Windows.Forms.Form
Implements MapWinGIS.ICallback
Public Sub New(ByRef AxMap1 As IMapWin)
InitializeComponent()
mMap = AxMap1
updateGridList()
End Sub
Dim mMap As IMapWin
Dim grdName As New List(Of String)
Dim grdFileName As New List(Of String)
Dim grdHn As New List(Of Integer)
Dim usedGrdHn As New List(Of Integer)
Dim grdIsFactor As New List(Of Boolean)
Dim nUsedGrd As Integer
Dim pre As String
Dim formulaContainsGrids As Boolean = False
Public Sub myError(ByVal KeyOfSender As String, ByVal ErrorMsg As String) Implements MapWinGIS.ICallback.Error
End Sub
Public Sub Progress(ByVal KeyOfSender As String, ByVal Percent As Integer, ByVal Message As String) Implements MapWinGIS.ICallback.Progress
ToolStripProgressBar1.Value = Percent
ToolStripStatus.Text = Message
End Sub
Private Sub updateGridList()
formulaContainsGrids = False
Me.ListBox3.Items.Clear()
grdName.Clear()
grdFileName.Clear()
grdHn.Clear()
usedGrdHn.Clear()
Dim lay As Layer
For Each lay In mMap.Layers
If (lay.LayerType = eLayerType.Grid) Then
grdName.Add(lay.Name)
grdFileName.Add(lay.FileName)
grdHn.Add(lay.Handle)
usedGrdHn.Add(-1)
'put layer name on mask
Me.ListBox3.Items.Add(lay.Name)
End If
Next
End Sub
Private Sub addStringInFormula(ByVal s As String)
Dim formulaTxt As String
Dim beforeS As String = ""
Dim afterS As String = ""
formulaTxt = Me.TextBox3.Text
If (Me.TextBox3.SelectionLength > 0) Then
beforeS = formulaTxt.Substring(0, Me.TextBox3.SelectionStart)
afterS = formulaTxt.Substring(Me.TextBox3.SelectionStart + Me.TextBox3.SelectionLength)
formulaTxt = beforeS + s + afterS
Else
formulaTxt = formulaTxt + " " + s
End If
Me.TextBox3.Text = formulaTxt
End Sub
End Class