Visual Basic Power Pack - выберите строку

Поэтому я использую блоки питания Visual Basic для создания простой простой графики. У меня есть возможность рисовать много линий там, где мне нужно, а также блоки питания VB позволяют мне выбирать фактические линии, которые я нарисовал, но я не знаю, как реализовать код, когда я действительно выбираю эти линии.

Вот мой код:

Imports Microsoft.VisualBasic.PowerPacks

Public Class Form1

    Dim ptA, ptB As Point                     ' starting and ending point
    Dim down = False
    Dim lines As New List(Of LineShape)
    Dim temp As LineShape                     ' temporary line to be drawn
    Dim canvas As New ShapeContainer          'shape container 

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
        down = True
        canvas.Parent = Me
        temp = New LineShape
        temp.Parent = canvas
        ptA = New Point(e.X, e.Y)
        temp.StartPoint = ptA
        temp.EndPoint = ptA
    End Sub

    Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp
        down = False
        ptB = New Point(e.X, e.Y)
        lines.Add(temp)
        temp = Nothing
    End Sub

    Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
        If down = True Then
            temp.X2 = e.X
            temp.Y2 = e.Y
        End If
    End Sub

End Class

Когда я запускаю и компилирую это, каждый раз, когда я удерживаю кнопку мыши, перемещаюсь и отпускаю, я могу нарисовать линию. Я могу выбрать строки, я просто не знаю, как добавить код, чтобы, когда я выбрал его, он что-то сделал. Если бы кто-то мог помочь мне, я был бы очень признателен. Если бы кто-то мог просто показать мне, как заставить окно сообщения отображаться при щелчке строки с ее начальной и конечной точками.

Я создаю программу структурного анализа, которая должна позволить пользователю нарисовать каркас здания, затем щелкнуть по линиям и добавить свойства, такие как материал, из которого она сделана, и тому подобное.

Большое спасибо!!

JD

1 ответ

Решение

Добавьте обработчик кликов к вашей временной строке...

Imports Microsoft.VisualBasic.PowerPacks

Public Class Form1

    Dim ptA, ptB As Point                     ' starting and ending point
    Dim down = False
    Dim lines As New List(Of LineShape)
    Dim temp As LineShape                     ' temporary line to be drawn
    Dim canvas As New ShapeContainer          'shape container 

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
        down = True
        canvas.Parent = Me
        temp = New LineShape
        temp.Parent = canvas
        ptA = New Point(e.X, e.Y)
        temp.StartPoint = ptA
        temp.EndPoint = ptA
    End Sub

    Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp
        down = False
        ptB = New Point(e.X, e.Y)

        AddHandler temp.Click, AddressOf LineClickHandler

        lines.Add(temp)
        temp = Nothing
    End Sub

    Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove
        If down = True Then
            temp.X2 = e.X
            temp.Y2 = e.Y
        End If
    End Sub

    Private Sub LineClickHandler(sender As Object, e As MouseEventArgs)
        Dim MyLine As LineShape = DirectCast(sender, LineShape)

        MsgBox("Start = " & MyLine.StartPoint.ToString & " End Point = " & MyLine.EndPoint.ToString)
    End Sub

End Class
Другие вопросы по тегам