仿照ArcMap实现的属性查询功能
仿照ArcMap实现的属性查询功能(还不够完善):

Public Class Select_By_AttributesClass Select_By_Attributes
Private m_pTocControl As ITOCControl
Private Ly_number As Integer
Private Ly_name As String
Private QueryMethod As ESRI.ArcGIS.Carto.esriSelectionResultEnum

Public Sub New()Sub New()
' 此调用是 Windows 窗体设计器所必需的。
InitializeComponent()
' 在 InitializeComponent() 调用之后添加任何初始化。
InitializeInterface()
End Sub

Private Sub InitializeInterface()Sub InitializeInterface()
Dim pMap As IMap
Dim i As Integer
pMap = ArcGIS.AxMapControl1.Map
Comb_Layer.Items.Clear()
For i = 0 To pMap.LayerCount - 1
If TypeOf pMap.Layer(i) Is IFeatureLayer Then
Comb_Layer.Items.Add(pMap.Layer(i).Name)
End If
Next
If Comb_Layer.Items.Count >= 1 Then
Comb_Layer.SelectedIndex = 0
Comb_Method.SelectedIndex = 0
Display_Attribute()
End If
End Sub


Private Sub Display_Attribute()Sub Display_Attribute()
Dim pFeaturelayer As IFeatureLayer
Dim pFeatureclass As IFeatureClass
Dim pFields As IFields
Dim fieldNum As Integer
Dim LayerNumber As Integer
LayerNumber = Comb_Layer.SelectedIndex
If LayerNumber <> -1 Then
pFeaturelayer = ArcGIS.AxMapControl1.Map.Layer(LayerNumber)
pFeatureclass = pFeaturelayer.FeatureClass
pFields = pFeatureclass.Fields
ListBox_Attribute.Items.Clear()
For fieldNum = 0 To pFields.FieldCount - 1
Dim fieldname As String
fieldname = """" & pFields.Field(fieldNum).Name & """"
ListBox_Attribute.Items.Add(pFields.Field(fieldNum).Name)
Next
Label4.Text = "SELECT * FROM " & pFeaturelayer.Name & " WHERE:"
QueryMethod = esriSelectionResultEnum.esriSelectionResultNew
End If
End Sub

Private Sub Comb_Layer_SelectedIndexChanged()Sub Comb_Layer_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Comb_Layer.SelectedIndexChanged
Display_Attribute()
End Sub

Private Function Query()Function Query() As Boolean
Try
If TextBox2.Text <> "" Then
Dim pFeaturelayer As IFeatureLayer
Dim LayerNumber As Integer
Dim pQueryFilter As IQueryFilter
pQueryFilter = New QueryFilter
Dim pFeatureSelection As IFeatureSelection
pQueryFilter.WhereClause = TextBox2.Text
LayerNumber = Comb_Layer.SelectedIndex
pFeaturelayer = ArcGIS.AxMapControl1.Map.Layer(LayerNumber)
pFeatureSelection = pFeaturelayer
pFeatureSelection.SelectFeatures(pQueryFilter, QueryMethod, False)
If Not pFeatureSelection.SelectionSet Is Nothing Then
Return True
Exit Function
Else
Return False
End If
End If
Catch ex As Exception
MessageBox.Show("There was an error executing the query.", "Attributes Selection", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1)
End Try
Return False
End Function


Private Sub ListBox_Attribute_DoubleClick()Sub ListBox_Attribute_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox_Attribute.DoubleClick
If TextBox2.Text <> "" Then
TextBox2.Text = TextBox2.Text & " " & ListBox_Attribute.SelectedItem
Else
TextBox2.Text = ListBox_Attribute.SelectedItem
End If
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub

op operate#Region "op operate"

Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = TextBox2.Text & " " & Button1.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub

Private Sub Button2_Click()Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox2.Text = TextBox2.Text & " " & Button2.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub

Private Sub Button3_Click()Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox2.Text = TextBox2.Text & " " & Button3.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub

Private Sub Button4_Click()Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
TextBox2.Text = TextBox2.Text & " " & Button4.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub

Private Sub Button5_Click()Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
TextBox2.Text = TextBox2.Text & " " & Button5.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button6_Click()Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
TextBox2.Text = TextBox2.Text & " " & Button6.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button7_Click()Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
TextBox2.Text = TextBox2.Text & " " & Button7.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button8_Click()Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
TextBox2.Text = TextBox2.Text & " " & Button8.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button9_Click()Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
TextBox2.Text = TextBox2.Text & " " & Button9.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button10_Click()Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
TextBox2.Text = TextBox2.Text & " " & Button10.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button11_Click()Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
TextBox2.Text = TextBox2.Text & " " & Button11.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button12_Click()Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
TextBox2.Text = TextBox2.Text & " " & Button12.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub

Private Sub Button13_Click()Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
TextBox2.Text = TextBox2.Text & " " & Button13.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub


Private Sub Button14_Click()Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
TextBox2.Text = TextBox2.Text & " " & Button14.Text
TextBox2.Focus()
TextBox2.SelectionStart = TextBox2.TextLength
End Sub
#End Region

Private Sub btn_Apply_Click()Sub btn_Apply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Apply.Click
If Query() = True Then
ArcGIS.AxMapControl1.ActiveView.Refresh()
ElseIf TextBox2.Text = "" Then
MessageBox.Show("No selection criteria was specified. Please enter the desired criteria.", "ArcMap", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
End If
End Sub

Private Sub btn_OK_Click()Sub btn_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OK.Click
If Query() = True Then
'Query()
ArcGIS.AxMapControl1.ActiveView.Refresh()
Me.Close()
ElseIf TextBox2.Text = "" Then
MessageBox.Show("No selection criteria was specified. Please enter the desired criteria.", "ArcMap", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
End If
End Sub

Private Sub btn_Close_Click()Sub btn_Close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Close.Click
Me.Close()
End Sub

Private Sub btn_Clear_Click()Sub btn_Clear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Clear.Click
TextBox2.Clear()
End Sub


Private Sub Comb_Method_SelectedIndexChanged()Sub Comb_Method_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Comb_Method.SelectedIndexChanged
Select Case Comb_Method.SelectedIndex
Case 0
QueryMethod = esriSelectionResultEnum.esriSelectionResultNew
Case 1
QueryMethod = esriSelectionResultEnum.esriSelectionResultAdd
Case 2
QueryMethod = esriSelectionResultEnum.esriSelectionResultSubtract
Case 3
QueryMethod = esriSelectionResultEnum.esriSelectionResultAnd
End Select
End Sub

Private Sub Select_By_Attributes_Load()Sub Select_By_Attributes_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedDialog
End Sub

Private Sub btn_Verify_Click()Sub btn_Verify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Verify.Click
Query()
End Sub

Private Sub btn_Load_Click()Sub btn_Load_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Load.Click
End Sub

Private Sub btn_Save_Click()Sub btn_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Save.Click
End Sub
End Class
浙公网安备 33010602011771号