locked
複数のMapPolygonから1個検索する方法 RRS feed

  • 質問

  • テキスト・ファイルをDownLoadして、複数のMapPolygon(6角形)を作成・MouseLeftButtonUpイベントを追加しました。
    イベント先 Car_Click()でクリックしたcar()は何番目なのかを知る方法を教えてください。


    Partial Public Class MainPage
        Public car() As MapPolygon

        Private Function GetPoints(ByVal count As Integer, ByVal centerX As Double, ByVal centerY As Double) As LocationCollection
            Dim width As Double = BingMaps.ViewportSize.Width * 0.1
            width = 0.00001

            Dim points As LocationCollection = New LocationCollection()
            For i As Integer = 0 To count - 1
                Dim j As Double = i / count
                points.Add(New Location(centerX + Math.Cos(j * 2.0 * Math.PI) * width, centerY + Math.Sin(j * 2.0 * Math.PI) * width))
            Next
            Return points
        End Function

        Private Sub wc_DownloadStringCompleted(ByVal sender As Object, ByVal e As DownloadStringCompletedEventArgs)
            '* テキスト・ファイルをDownLoad完了
            Dim s1 As String
            Dim GYO() As String
            Dim buf() As String
            If IsNothing(e.Error) = True Then
                s1 = e.Result
                GYO = s1.Split(vbCrLf)
                '* 配列の宣言
                ReDim car(GYO.Length - 2)
                For i As Integer = 0 To GYO.Length - 2
                    buf = GYO(i).Split(",")
                    '* エリアの確保
                    car(i) = New MapPolygon()
                    car(i).Locations = GetPoints(6, buf(1), buf(2))
                    car(i).StrokeThickness = 5
                    car(i).Stroke = New SolidColorBrush(Colors.Blue)
                    car(i).Fill = New SolidColorBrush(Colors.Blue)
                    '* 左ボタン・クリックのイベント追加
                    AddHandler car(i).MouseLeftButtonUp, AddressOf Car_Click
                    MyLayer.Children.Add(car(i))
                Next
            End If
        End Sub

        Private Sub Car_Click(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
            For i As Integer = 0 To car.Length


            Next
        End Sub

    End Class

    2011年11月20日 14:00

回答

  • >クリックしたcar()は何番目

    ・クリックされたオブジェクトにアクセスするために何番目かが知りたい
    ・順番そのものに意味があるので、何番目かが知りたい

    のどちらかなと思いますが
    前者の場合なら引数のsenderに入ってきていると思います。

    後者の場合、
    car() をList(Of T)クラスにしてIndexOf メソッド (T) を使用すれば取得できませんか?
    • 回答としてマーク y-gfd 2011年11月22日 14:17
    2011年11月21日 17:17

すべての返信

  • >クリックしたcar()は何番目

    ・クリックされたオブジェクトにアクセスするために何番目かが知りたい
    ・順番そのものに意味があるので、何番目かが知りたい

    のどちらかなと思いますが
    前者の場合なら引数のsenderに入ってきていると思います。

    後者の場合、
    car() をList(Of T)クラスにしてIndexOf メソッド (T) を使用すれば取得できませんか?
    • 回答としてマーク y-gfd 2011年11月22日 14:17
    2011年11月21日 17:17
  • Tetsuaki Uchida様、回答ありがとうございます。

    car() をList(Of T)クラスにしてIndexOf メソッド (T) を使用して取得できました。

     

    2011年11月22日 14:22