ArcObjects Library Reference  

ButtonAddIn

Migrating from VB6 to VB .NET for ArcGIS 10

[C#]

ButtonAddIn.cs


[Visual Basic .NET]

ButtonAddIn.vb

Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.GeoDatabaseUI
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.ArcMapUI

Public Class ButtonAddIn
    Inherits ESRI.ArcGIS.Desktop.AddIns.Button

    Private m_TableView2 As ITableView2

    Public Sub New()
    End Sub

    Protected Overrides Sub OnClick()
        Copy()
    End Sub

    Protected Overrides Sub OnUpdate()

        'If TableWindow is not found, disable the command.
        Enabled = False

        'Create a new instance of the TableWindowClass using the ITableWindow3 interface
        Dim tableWindow3 As ITableWindow3 = New TableWindowClass

        'Create an empty ISet to hold the open table windows
        Dim windowSet As ISet = Nothing

        'The .FindOpenTableWindows populates the windowSet object byRef
        tableWindow3.FindOpenTableWindows(windowSet)

        'If the windowSet is not populated stop execution of OnUpdate
        If windowSet Is Nothing Then
            Return
        End If

        'Go to the first item in the ISet
        windowSet.Reset()

        'Cast the first ISet object to an ITableWindow
        Dim tableWindow As ITableWindow = CType(windowSet.Next, ITableWindow)

        'Loop through the tableWindows.
        Do Until tableWindow Is Nothing

            'Get the TableControl from tthe TableWindow
            Dim tableControl As ITableControl = tableWindow.TableControl

            'Set the member (also known as, Global) variable ITableView2 interface.
            m_TableView2 = CType(tableControl, ITableView2)

            'If you have selected records, enable the command.
            Dim selectionSet As ISelectionSet = m_TableView2.SelectionSet
            If selectionSet.Count > 0 Then
                Enabled = True
            End If

            'Iterate over the next ArcMap Window.
            tableWindow = CType(windowSet.Next, ITableWindow)

        Loop

    End Sub

    Private Sub Copy()

        ' Get the selection from the table.
        Dim selectionSet As ISelectionSet = m_TableView2.SelectionSet
        Dim table As ITable = m_TableView2.Table
        Dim cursor As ICursor = Nothing

        'Load the selection results into the cursor object.
        selectionSet.Search(Nothing, False, cursor)

        'Get the first row of the cursor.
        Dim rowBuffer As IRowBuffer = cursor.NextRow

        'Obtain all of the fields in table.
        Dim fields As IFields = rowBuffer.Fields

        'Initialize the clipboardString to be empty.
        Dim clipboardString As String = ""

        'Loop through all of the rows.
        Dim Count As Integer = fields.FieldCount
        Do Until rowBuffer Is Nothing

            'Loop through all of the fields.
            Dim index As Integer
            For index = 0 To Count - 1
                If Not TypeOf rowBuffer.Value(index) Is IGeometry Then

                    'Extract the strings from each field in the table row.
                    clipboardString = clipboardString + rowBuffer.Value(index).ToString + ","
                End If
            Next index

            'Remove the trailing comma.
            clipboardString = Left(clipboardString, Len(clipboardString) - 1)

            'Add the line feed.
            clipboardString = clipboardString + vbNewLine

            'Go to the next row.
            rowBuffer = cursor.NextRow

        Loop

        'Copy the contents of the clipboardString to the Clipboard.
        My.Computer.Clipboard.Clear()
        My.Computer.Clipboard.SetText(clipboardString)

    End Sub
End Class