Jump to content
falcan

VB2010 - movimento

Recommended Posts

falcan

Encontrei este código na internet .... esta aqui se alguém quiser fazer alguma coisa se mexer ....

Para os botões Numericos

basta criar uma ovalshape e depois no Form_KeyDown inserir este código .

If e.KeyCode = Keys.NumPad2 Then
            Dim i As String = OvalShape1.Location.X, s As String = OvalShape1.Location.Y + 10
            OvalShape1.Location = New Point(i, s)
        ElseIf e.KeyCode = Keys.NumPad8 Then
            Dim b As String = OvalShape1.Location.X
            Dim g As String = OvalShape1.Location.Y - 10
            OvalShape1.Location = New Point(b, g)
        ElseIf e.KeyCode = Keys.NumPad4 Then
            OvalShape1.Left -= 10
        ElseIf e.KeyCode = Keys.NumPad6 Then
            OvalShape1.Left += 10
        End If

para As Setas de direcção

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean


        If keyData = Keys.Down Then
            Dim i As String = OvalShape1.Location.X, s As String = OvalShape1.Location.Y + 10
            OvalShape1.Location = New Point(i, s)
        ElseIf keyData = Keys.Up Then
            Dim b As String = OvalShape1.Location.X
            Dim g As String = OvalShape1.Location.Y - 10
            OvalShape1.Location = New Point(b, g)
        ElseIf keyData = Keys.Left Then
            OvalShape1.Left -= 10
        ElseIf keyData = Keys.Right Then
            OvalShape1.Left += 10
        End If
Return MyBase.ProcessCmdKey(msg, keyData)


End Function[/code = vbnet]


Um obrigado especial para jpaulino pela ajuda do movimento das setas de direcção 






Share this post


Link to post
Share on other sites
falcan

keypreview ? isso serve para fazer o mesmo código mas usando as setas ?

eu não alterei isso ..

Share this post


Link to post
Share on other sites
jpaulino

Define no form load Me.KeyPreview = True (ou nas propriedades do form) e depois tenta novamente.

Share this post


Link to post
Share on other sites
falcan

Não esta a dar ..... o nome das setas é key.down , key.up, key.left e key.right ???

não esta a funcionar... ;)

Share this post


Link to post
Share on other sites
jpaulino

Não andes a apagar mensagens ;)

Faz assim:

     Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean


        If keyData = Keys.Up Then
            ' ...
            Stop
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)

    End Function

Share this post


Link to post
Share on other sites
falcan

So apaguei porque em muitos forums não gostam de 2 Tópicos seguidos xD

Ok o '... é o código que tenho que adicionar não é ?

Share this post


Link to post
Share on other sites
falcan

poissss... ;) ainda sou muito noob em programação e enviaste-me  uma função... mas ainda não tenho aquele "Crânio de programador " para saber adaptar ao meu programa .....

Share this post


Link to post
Share on other sites
jpaulino

Também ainda não mostraste código nenhum .... assim é dificil alguém ajudar-te.

Share this post


Link to post
Share on other sites
falcan

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        If e.KeyCode = Keys.Down Then


            Dim i As String = OvalShape1.Location.X, s As String = OvalShape1.Location.Y + 10

            OvalShape1.Location = New Point(i, s)

        ElseIf e.KeyCode = Keys.Up Then

            Dim b As String = OvalShape1.Location.X
            Dim g As String = OvalShape1.Location.Y - 10

            OvalShape1.Location = New Point(b, g)

        ElseIf e.KeyCode = Keys.Left Then

            OvalShape1.Left -= 10

        ElseIf e.KeyCode = Keys.Right Then

            OvalShape1.Left += 10

        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.KeyPreview = True
    End Sub
End Class

tenho isto assim ...

e agora onde insiro o novo código ?

Share this post


Link to post
Share on other sites
jpaulino

Em vez disso, usas o Overrides à função ProcessCmdKey que te mostrei:

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean

            If keyData  = Keys.Down Then

                Dim i As String = OvalShape1.Location.X, s As String = OvalShape1.Location.Y + 10

                OvalShape1.Location = New Point(i, s)

          elseif

                ' ...

        Return MyBase.ProcessCmdKey(msg, keyData)

    End Function

 

Share this post


Link to post
Share on other sites
falcan

ahh ok XD ... estava a dar erro no stop xD

agora esta a dar xDDD obrigado ;) por tudo ....

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.