Jump to content
Bartude

Mover OvalShape em Runtime vb.net

Recommended Posts

Bartude

Boas, eu tenho varios OvalShapes dentro dum RectangleShape, e o que eu quero fazer é move-los de sitio quando se carrega num botão.

Tenho esta parte de código:

For i As Integer = 1 To num * 2
            If Boolean.TrueString = True Then
                If i Mod 2 = 0 Then   'Caso o i seja par, entra neste If
                    RectangleShape1.Container.Controls.Item("OvalShape" + i.ToString).Location = New Point(par - 130, suba)
                    suba += 31
                End If
                If i Mod 2 <> 0 Then   'Caso o i seja impar, entra neste If
                    RectangleShape1.Container.Controls.Item("OvalShape" + i.ToString).Location = New Point(impar - 110, suba)
                End If
            End If
Next

mas esta a dar o erro: "A referência de objecto não foi definida como uma instância de um objecto."

Agradeço qualquer ajuda, obrigado ;)

Share this post


Link to post
Share on other sites
Bartude

Eu não quero move-los com o rato, mas sim com coordenadas ja predefinidas. Mas mover botoes, labels consigo fazer, mas como os OvalShapes fazem parte do Microsoft.VisualBasic.PowerPacks, não funcionam da mesma maneira.

Share this post


Link to post
Share on other sites
jpaulino

Ah, entendi mal.

Mas só tens então de mexer nas propriedades Top e Left, não entendo o problema.

É que o código que tens está a dar erro porque não encontra nenhum "Ovalshape". Verifica se não estás a invocar um controlo que não existe ;)

Share this post


Link to post
Share on other sites
Bartude

Eu estou a criar os OvalShapes no Runtime.

Sub ovals()
        suba = 30
        For i As Integer = 1 To num * 2
            If i Mod 2 <> 0 Then
                Dim oval As OvalShape = New OvalShape()
                ' Propriedades dos Ovals
                oval.Size = New Size(17, 17)
                oval.BackColor = System.Drawing.Color.Lime
                oval.BackStyle = Microsoft.VisualBasic.PowerPacks.BackStyle.Opaque
                oval.Name = "OvalShape" & i.ToString
                oval.Location = New Point(impar, suba)
                RectangleShape1.Parent.Shapes.Add(oval)
                RectangleShape1.Visible = False
                oval.Visible = False
            End If
            If i Mod 2 = 0 Then
                Dim oval As OvalShape = New OvalShape()
                ' Propriedades dos Ovals
                oval.Size = New Size(17, 17)
                oval.BackColor = System.Drawing.Color.Red
                oval.BackStyle = Microsoft.VisualBasic.PowerPacks.BackStyle.Opaque
                oval.Name = "OvalShape" & i.ToString
                oval.Location = New Point(par, suba)
                RectangleShape1.Parent.Shapes.Add(oval)
                RectangleShape1.Visible = False
                suba += 31
            End If
        Next
        suba = 30
    End Sub

Isto esta a encontrar os controlos, senão nem sequer entrava neste if:

If Boolean.TrueString = True Then

Eu antes tinha o If doutro maneira, só que apareceu num aviso que era recomendados por isto.

Share this post


Link to post
Share on other sites
jpaulino

O erro deve ser (quase de certeza) em:

RectangleShape1.Container.Controls.Item("OvalShape" + i.ToString).Location = New Point(par - 130, suba)

Mas não entendo também o que queres fazer com o "If Boolean.TrueString = True Then " ... isto não é nada!

Para verificares se encontra o controlo ou não, podes fazer:

        Dim ctrl() As Control = Me.Controls.Find("OvalShape" + i.ToString, True)
        If ctrl.Length > 1 Then
            ctrl(0).Location = ...
        End If

Share this post


Link to post
Share on other sites
Bartude

Sim, o erro é ai(esqueci-me de dizer antes :x )

Eu tive que alterar isso, ja que estou a inserir numa RectangleShape, mas continua a dar o mesmo erro.

Dim ctrl() As Control = RectangleShape1.Container.Controls.Find("OvalShape" + i.ToString, True)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.