Displaying MapTips in the MapControl
MapTips.vb
' Copyright 2010 ESRI
' 
' All rights reserved under the copyright laws of the United States
' and applicable international laws, treaties, and conventions.
' 
' You may freely redistribute and use this sample code, with or
' without modification, provided you include the original copyright
' notice and use restrictions.
' 
' See the use restrictions.
' 

Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.SystemUI
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS


Public Class Form1
    Inherits System.Windows.Forms.Form

    <STAThread()> _
Shared Sub Main()

        'Load runtime 
        If Not RuntimeManager.Bind(ProductCode.Engine) Then
            If Not RuntimeManager.Bind(ProductCode.Desktop) Then
                MessageBox.Show("Application shutting down. Unable to bind to ArcGIS Engine runtime.")
                System.Environment.Exit(1) ' Force exit or other indication in the application
            End If
        End If

        Application.Run(New Form1())
    End Sub
#Region "Windows Form Designer generated code "
    Public Sub New()
        MyBase.New()
        'This call is required by the Windows Form Designer.
        InitializeComponent()
    End Sub
    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal Disposing As Boolean)
        'Release COM objects 
        ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown()
        If Disposing Then
            If Not components Is Nothing Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(Disposing)
    End Sub
    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer
    Public WithEvents cmdFullExtent As System.Windows.Forms.Button
    Public WithEvents chkShowTips As System.Windows.Forms.CheckBox
    Public WithEvents cmdLoadData As System.Windows.Forms.Button
    Public WithEvents cboDataField As System.Windows.Forms.ComboBox
    Public WithEvents cboDataLayer As System.Windows.Forms.ComboBox
    Public WithEvents Label3 As System.Windows.Forms.Label
    Public WithEvents Label2 As System.Windows.Forms.Label
    Public WithEvents Label1 As System.Windows.Forms.Label
    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.
    'Do not modify it using the code editor.
    Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
    Friend WithEvents AxMapControl1 As ESRI.ArcGIS.Controls.AxMapControl
    Friend WithEvents chkTransparent As System.Windows.Forms.CheckBox
    Friend WithEvents AxLicenseControl1 As ESRI.ArcGIS.Controls.AxLicenseControl
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
        Me.cmdFullExtent = New System.Windows.Forms.Button
        Me.chkShowTips = New System.Windows.Forms.CheckBox
        Me.cmdLoadData = New System.Windows.Forms.Button
        Me.cboDataField = New System.Windows.Forms.ComboBox
        Me.cboDataLayer = New System.Windows.Forms.ComboBox
        Me.Label3 = New System.Windows.Forms.Label
        Me.Label2 = New System.Windows.Forms.Label
        Me.Label1 = New System.Windows.Forms.Label
        Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog
        Me.AxMapControl1 = New ESRI.ArcGIS.Controls.AxMapControl
        Me.AxLicenseControl1 = New ESRI.ArcGIS.Controls.AxLicenseControl
        Me.chkTransparent = New System.Windows.Forms.CheckBox
        CType(Me.AxMapControl1, System.ComponentModel.ISupportInitialize).BeginInit()
        CType(Me.AxLicenseControl1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'cmdFullExtent
        '
        Me.cmdFullExtent.BackColor = System.Drawing.SystemColors.Control
        Me.cmdFullExtent.Cursor = System.Windows.Forms.Cursors.Default
        Me.cmdFullExtent.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cmdFullExtent.ForeColor = System.Drawing.SystemColors.ControlText
        Me.cmdFullExtent.Location = New System.Drawing.Point(223, 400)
        Me.cmdFullExtent.Name = "cmdFullExtent"
        Me.cmdFullExtent.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cmdFullExtent.Size = New System.Drawing.Size(113, 25)
        Me.cmdFullExtent.TabIndex = 7
        Me.cmdFullExtent.Text = "Zoom to Full Extent"
        Me.cmdFullExtent.UseVisualStyleBackColor = False
        '
        'chkShowTips
        '
        Me.chkShowTips.BackColor = System.Drawing.SystemColors.Control
        Me.chkShowTips.Cursor = System.Windows.Forms.Cursors.Default
        Me.chkShowTips.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.chkShowTips.ForeColor = System.Drawing.SystemColors.ControlText
        Me.chkShowTips.Location = New System.Drawing.Point(8, 40)
        Me.chkShowTips.Name = "chkShowTips"
        Me.chkShowTips.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.chkShowTips.Size = New System.Drawing.Size(129, 25)
        Me.chkShowTips.TabIndex = 4
        Me.chkShowTips.Text = "Show Map Tips"
        Me.chkShowTips.UseVisualStyleBackColor = False
        '
        'cmdLoadData
        '
        Me.cmdLoadData.BackColor = System.Drawing.SystemColors.Control
        Me.cmdLoadData.Cursor = System.Windows.Forms.Cursors.Default
        Me.cmdLoadData.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cmdLoadData.ForeColor = System.Drawing.SystemColors.ControlText
        Me.cmdLoadData.Location = New System.Drawing.Point(8, 8)
        Me.cmdLoadData.Name = "cmdLoadData"
        Me.cmdLoadData.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cmdLoadData.Size = New System.Drawing.Size(113, 25)
        Me.cmdLoadData.TabIndex = 3
        Me.cmdLoadData.Text = "Load Document..."
        Me.cmdLoadData.UseVisualStyleBackColor = False
        '
        'cboDataField
        '
        Me.cboDataField.BackColor = System.Drawing.SystemColors.Window
        Me.cboDataField.Cursor = System.Windows.Forms.Cursors.Default
        Me.cboDataField.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cboDataField.ForeColor = System.Drawing.SystemColors.WindowText
        Me.cboDataField.Location = New System.Drawing.Point(176, 40)
        Me.cboDataField.Name = "cboDataField"
        Me.cboDataField.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cboDataField.Size = New System.Drawing.Size(161, 22)
        Me.cboDataField.TabIndex = 2
        '
        'cboDataLayer
        '
        Me.cboDataLayer.BackColor = System.Drawing.SystemColors.Window
        Me.cboDataLayer.Cursor = System.Windows.Forms.Cursors.Default
        Me.cboDataLayer.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.cboDataLayer.ForeColor = System.Drawing.SystemColors.WindowText
        Me.cboDataLayer.Location = New System.Drawing.Point(176, 16)
        Me.cboDataLayer.Name = "cboDataLayer"
        Me.cboDataLayer.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.cboDataLayer.Size = New System.Drawing.Size(161, 22)
        Me.cboDataLayer.TabIndex = 1
        '
        'Label3
        '
        Me.Label3.BackColor = System.Drawing.SystemColors.Control
        Me.Label3.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label3.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label3.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label3.Location = New System.Drawing.Point(7, 400)
        Me.Label3.Name = "Label3"
        Me.Label3.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label3.Size = New System.Drawing.Size(209, 17)
        Me.Label3.TabIndex = 8
        Me.Label3.Text = "Left mouse button to zoomin, right to pan"
        '
        'Label2
        '
        Me.Label2.BackColor = System.Drawing.SystemColors.Control
        Me.Label2.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label2.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label2.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label2.Location = New System.Drawing.Point(136, 42)
        Me.Label2.Name = "Label2"
        Me.Label2.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label2.Size = New System.Drawing.Size(33, 17)
        Me.Label2.TabIndex = 6
        Me.Label2.Text = "Fields:"
        '
        'Label1
        '
        Me.Label1.BackColor = System.Drawing.SystemColors.Control
        Me.Label1.Cursor = System.Windows.Forms.Cursors.Default
        Me.Label1.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label1.ForeColor = System.Drawing.SystemColors.ControlText
        Me.Label1.Location = New System.Drawing.Point(136, 18)
        Me.Label1.Name = "Label1"
        Me.Label1.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Label1.Size = New System.Drawing.Size(41, 17)
        Me.Label1.TabIndex = 5
        Me.Label1.Text = "Layers:"
        '
        'AxMapControl1
        '
        Me.AxMapControl1.Location = New System.Drawing.Point(8, 89)
        Me.AxMapControl1.Name = "AxMapControl1"
        Me.AxMapControl1.OcxState = CType(resources.GetObject("AxMapControl1.OcxState"), System.Windows.Forms.AxHost.State)
        Me.AxMapControl1.Size = New System.Drawing.Size(328, 296)
        Me.AxMapControl1.TabIndex = 9
        '
        'AxLicenseControl1
        '
        Me.AxLicenseControl1.Enabled = True
        Me.AxLicenseControl1.Location = New System.Drawing.Point(304, 68)
        Me.AxLicenseControl1.Name = "AxLicenseControl1"
        Me.AxLicenseControl1.OcxState = CType(resources.GetObject("AxLicenseControl1.OcxState"), System.Windows.Forms.AxHost.State)
        Me.AxLicenseControl1.Size = New System.Drawing.Size(32, 32)
        Me.AxLicenseControl1.TabIndex = 10
        '
        'chkTransparent
        '
        Me.chkTransparent.AutoSize = True
        Me.chkTransparent.Location = New System.Drawing.Point(8, 65)
        Me.chkTransparent.Name = "chkTransparent"
        Me.chkTransparent.Size = New System.Drawing.Size(108, 18)
        Me.chkTransparent.TabIndex = 11
        Me.chkTransparent.Text = "Transparent Tips"
        Me.chkTransparent.UseVisualStyleBackColor = True
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.BackColor = System.Drawing.SystemColors.Control
        Me.ClientSize = New System.Drawing.Size(350, 433)
        Me.Controls.Add(Me.chkTransparent)
        Me.Controls.Add(Me.AxLicenseControl1)
        Me.Controls.Add(Me.AxMapControl1)
        Me.Controls.Add(Me.cmdFullExtent)
        Me.Controls.Add(Me.chkShowTips)
        Me.Controls.Add(Me.cmdLoadData)
        Me.Controls.Add(Me.cboDataField)
        Me.Controls.Add(Me.cboDataLayer)
        Me.Controls.Add(Me.Label3)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.Label1)
        Me.Cursor = System.Windows.Forms.Cursors.Default
        Me.Font = New System.Drawing.Font("Arial", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Location = New System.Drawing.Point(4, 23)
        Me.Name = "Form1"
        Me.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Text = "Map Tips"
        CType(Me.AxMapControl1, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.AxLicenseControl1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)
        Me.PerformLayout()

    End Sub
#End Region

    Private Sub cboDataField_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cboDataField.SelectedIndexChanged

        'Get IFeatureLayer interface
        Dim pFeatureLayer As IFeatureLayer
        pFeatureLayer = AxMapControl1.get_Layer(cboDataLayer.SelectedIndex)
        'Query interface for IlayerFields
        Dim pLayerFields As ILayerFields
        pLayerFields = pFeatureLayer

        Dim i As Integer
        Dim pField As IField
        'Loop through the fields
        For i = 0 To pLayerFields.FieldCount - 1
            'Get IField interface
            pField = pLayerFields.Field(i)
            'If the field name is the name selected in the control
            If pField.Name = cboDataField.Text Then
                'Set the field as the display field
                pFeatureLayer.DisplayField = pField.Name
                Exit For
            End If
        Next i

    End Sub

    Private Sub cboDataLayer_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cboDataLayer.SelectedIndexChanged

        'Disable field combo if feature layer is not selected and exit
        If Not TypeOf AxMapControl1.get_Layer(cboDataLayer.SelectedIndex) Is IFeatureLayer Then
            cboDataField.Items.Clear()
            cboDataField.Enabled = False
            Exit Sub
        End If

        'Get IFeatureLayer interface
        Dim pFeatureLayer As IFeatureLayer
        pFeatureLayer = AxMapControl1.get_Layer(cboDataLayer.SelectedIndex)
        'Query interface for ILayerFields
        Dim pLayerFields As ILayerFields
        pLayerFields = pFeatureLayer

        Dim i As Integer
        Dim j As Integer
        j = 0
        Dim pField As IField
        cboDataField.Items.Clear()
        cboDataField.Enabled = True
        'Loop through the fields
        For i = 0 To pLayerFields.FieldCount - 1
            'Get IField interface
            pField = pLayerFields.Field(i)
            'If the field is not the shape field
            If pField.Type <> esriFieldType.esriFieldTypeGeometry Then
                'Add field name to the control
                cboDataField.Items.Insert(j, pField.Name)
                'If the field name is the display field
                If pField.Name = pFeatureLayer.DisplayField Then
                    'Select the field name in the control
                    cboDataField.SelectedIndex = j
                End If
                j = j + 1
            End If
        Next i

        ShowLayerTips()

    End Sub

    Private Sub chkShowTips_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles chkShowTips.CheckStateChanged
        ShowLayerTips()
    End Sub

    Private Sub cmdFullExtent_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdFullExtent.Click
        'Zoom to full extent of data
        AxMapControl1.Extent = AxMapControl1.FullExtent
    End Sub

    Private Sub cmdLoadData_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdLoadData.Click

        OpenFileDialog1.Title = "Browse Map Document"
        OpenFileDialog1.Filter = "Map Documents (*.mxd)|*.mxd"
        OpenFileDialog1.ShowDialog()

        'Exit if no map document is selected
        Dim sFilePath As String
        sFilePath = OpenFileDialog1.FileName
        If sFilePath = "" Then Exit Sub

        'Validate and load map document
        If AxMapControl1.CheckMxFile(sFilePath) Then
            AxMapControl1.LoadMxFile(sFilePath)
            'Enabled MapControl
            AxMapControl1.Enabled = True
        Else
            MsgBox(sFilePath & " is not a valid ArcMap document")
            Exit Sub
        End If

        'Add the layer names to combo
        cboDataLayer.Items.Clear()
        Dim i As Short
        For i = 0 To AxMapControl1.LayerCount - 1
            cboDataLayer.Items.Insert(i, AxMapControl1.get_Layer(i).Name)
        Next i

        'Select first layer in control
        cboDataLayer.SelectedIndex = 0
        'Enable controls if disabled
        If chkShowTips.Enabled = False Then chkShowTips.Enabled = True
        If chkTransparent.Enabled = False Then chkTransparent.Enabled = True
        If cboDataLayer.Enabled = False Then cboDataLayer.Enabled = True
        If cboDataField.Enabled = False Then cboDataField.Enabled = True

    End Sub

    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        'Disable controls
        chkShowTips.Enabled = False
        chkTransparent.Enabled = False
        cboDataLayer.Enabled = False
        cboDataField.Enabled = False
    End Sub

    Private Sub ShowLayerTips()

        Dim i As Integer
        Dim pLayer As ILayer

        'Loop through the maps layers
        For i = 0 To AxMapControl1.LayerCount - 1
            'Get ILayer interface
            pLayer = AxMapControl1.get_Layer(i)
            'If is the layer selected in the control
            If cboDataLayer.SelectedIndex = i Then
                'If want to show map tips
                If chkShowTips.CheckState = 1 Then
                    pLayer.ShowTips = True
                Else
                    pLayer.ShowTips = False
                End If
            Else
                pLayer.ShowTips = False
            End If
        Next i
    End Sub

    Private Overloads Sub AxMapControl1_OnMouseDown(ByVal sender As System.Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent) Handles AxMapControl1.OnMouseDown
        'If left mouse button zoom in
        If e.button = 1 Then
            AxMapControl1.Extent = AxMapControl1.TrackRectangle
            'If right mouse button pan
        ElseIf e.button = 2 Then
            AxMapControl1.Pan()
        End If
    End Sub

    Private Sub chkShowTips_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkShowTips.CheckedChanged
        If chkShowTips.CheckState = CheckState.Checked Then
            AxMapControl1.ShowMapTips = True
        Else
            AxMapControl1.ShowMapTips = False
        End If
    End Sub

    Private Sub chkTransparent_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkTransparent.CheckedChanged
        If chkTransparent.CheckState = CheckState.Checked Then
            AxMapControl1.TipStyle = esriTipStyle.esriTipStyleTransparent
        Else
            AxMapControl1.TipStyle = esriTipStyle.esriTipStyleSolid
        End If
    End Sub
End Class