Migrating from VB6 to VB .NET for ArcGIS 10
[C#]
clscopy_table_sel.cs
[Visual Basic .NET]
clscopy_table_sel.vb
Option Strict Off Option Explicit On <System.Runtime.InteropServices.ProgId("clscopy_table_sel_NET.clscopy_table_sel_NET")> Public Class clscopy_table_sel Implements ESRI.ArcGIS.SystemUI.ICommand Private m_pApp As ESRI.ArcGIS.Framework.IApplication Private m_pMXDoc As ESRI.ArcGIS.ArcMapUI.IMxDocument Private m_pWorkSpace As ESRI.ArcGIS.Geodatabase.IWorkspace Private m_pTableView As ESRI.ArcGIS.GeoDatabaseUI.ITableView2 Private ReadOnly Property ICommand_Bitmap() As System.Int32 Implements ESRI.ArcGIS.SystemUI.ICommand.Bitmap Get End Get End Property Private ReadOnly Property ICommand_Caption() As String Implements ESRI.ArcGIS.SystemUI.ICommand.Caption Get ICommand_Caption = "Copy Table Selection VB2008" End Get End Property Private ReadOnly Property ICommand_Category() As String Implements ESRI.ArcGIS.SystemUI.ICommand.Category Get ICommand_Category = "Developer Samples" End Get End Property Private ReadOnly Property ICommand_Checked() As Boolean Implements ESRI.ArcGIS.SystemUI.ICommand.Checked Get End Get End Property Private ReadOnly Property ICommand_Enabled() As Boolean Implements ESRI.ArcGIS.SystemUI.ICommand.Enabled Get ' Make it enabled if it is in a table context menu. ICommand_Enabled = False Dim pAppWindows As ESRI.ArcGIS.ArcMapUI.IApplicationWindows Dim pWindowSet As ESRI.ArcGIS.esriSystem.ISet = Nothing Dim pTableWindow As ESRI.ArcGIS.ArcMapUI.ITableWindow Dim pTableControl As ESRI.ArcGIS.GeoDatabaseUI.ITableControl Dim pSelSet As ESRI.ArcGIS.Geodatabase.ISelectionSet Dim pTableWindow3 As ESRI.ArcGIS.ArcMapUI.ITableWindow3 pTableWindow3 = New ESRI.ArcGIS.ArcMapUI.TableWindow() pTableWindow3.FindOpenTableWindows(pWindowSet) pAppWindows = m_pApp pWindowSet.Reset() pTableWindow = pWindowSet.Next Do Until pTableWindow Is Nothing pTableControl = pTableWindow.TableControl m_pTableView = pTableControl pSelSet = m_pTableView.SelectionSet If pSelSet.Count > 0 Then ICommand_Enabled = True End If pTableWindow = pWindowSet.Next Loop End Get End Property Private ReadOnly Property ICommand_HelpContextID() As Integer Implements ESRI.ArcGIS.SystemUI.ICommand.HelpContextID Get End Get End Property Private ReadOnly Property ICommand_HelpFile() As String Implements ESRI.ArcGIS.SystemUI.ICommand.HelpFile Get Return "" End Get End Property Private ReadOnly Property ICommand_Message() As String Implements ESRI.ArcGIS.SystemUI.ICommand.Message Get ICommand_Message = "Copies the selected records in the table window VB2008" End Get End Property Private ReadOnly Property ICommand_Name() As String Implements ESRI.ArcGIS.SystemUI.ICommand.Name Get ICommand_Name = "Developer Samples_Copy Table Selection VB2008" End Get End Property Private ReadOnly Property ICommand_Tooltip() As String Implements ESRI.ArcGIS.SystemUI.ICommand.Tooltip Get ICommand_Tooltip = "Validate Table Selection VB2008" End Get End Property Private Sub ICommand_OnClick() Implements ESRI.ArcGIS.SystemUI.ICommand.OnClick copy() End Sub Private Sub ICommand_OnCreate(ByVal hook As Object) Implements ESRI.ArcGIS.SystemUI.ICommand.OnCreate m_pApp = hook m_pMXDoc = m_pApp.Document End Sub '################### Private Routines Private Sub copy() ' Get the selection from the table. Dim pInSelSet As ESRI.ArcGIS.Geodatabase.ISelectionSet Dim pTable As ESRI.ArcGIS.Geodatabase.ITable pInSelSet = m_pTableView.SelectionSet pTable = m_pTableView.Table Dim pCur As ESRI.ArcGIS.Geodatabase.ICursor = Nothing Dim pRow As ESRI.ArcGIS.Geodatabase.IRowBuffer Dim pFlds As ESRI.ArcGIS.Geodatabase.IFields 'Dim pFld As ESRI.ArcGIS.Geodatabase.IField. Dim iCnt As Short Dim iind As Short pInSelSet.Search(Nothing, False, pCur) pRow = pCur.NextRow Dim strR As String = "" pFlds = pRow.Fields iCnt = pFlds.FieldCount Do Until pRow Is Nothing For iind = 0 To iCnt - 1 If Not TypeOf pRow.Value(iind) Is ESRI.ArcGIS.Geometry.IGeometry Then 'UPGRADE_WARNING: Couldn't resolve default property of object pRow.Value(). Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"' strR = strR & pRow.Value(iind) & "," End If Next iind strR = Left(strR, Len(strR) - 1) ' Remove the trailing comma. strR = strR & vbNewLine pRow = pCur.NextRow Loop My.Computer.Clipboard.Clear() My.Computer.Clipboard.SetText(strR) End Sub End Class