none
LLAMAR A UN EVENTO RRS feed

  • Pregunta

  •  

    HOLA BUENAS TARDES:

     

    UN SALUDO ANTES QUE NADA Y LES EXPLICO MI PROLEMA.

     

    QUIERO MANDAR A LLAMAR A EVENTOS DEL FORMULARIO POR EJEMPLO EN ESTE MOMENTO QUIERO LLAMAR AL EVENTO

     

    Code Snippet

    Private Sub dibujando_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    Handles Me.MouseDown

     

    'Creo un lienzo para expresar mi arte

    Dim lienzo As Graphics = Me.CreateGraphics

    'Le asigno un color

    lienzo.Clear(Color.Black)

    'Creo un lapicito para poder dibujar

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    'Dim punto1 As Point = New Point(10, 10)

    'Dim punto2 As Point = New Point(100, 100)

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(e.X, e.Y, 10, 10))

    i = e.X

    j = e.Y

    lienzo.Dispose()

    Timer1.Enabled = True

     

    End Sub

     

     

    SOLO QUE LO INTENTE HACER DE LA SIGUIENTE MANERA

     

    CALL DIBUJANDO_MOUSEDOWN Y ME PIDE LOS PARAMETROS DEL OJETO Y DEL OBJETO QUE CONTIENE LAS CARACTERISTICAS DEL EVENTO "E" Y NO SE COMO HACERLO...

     

    Me podrian ayudar?

     

    Ah por cierto tambien intente de la siguiente manera

     

    My.forms.Dibujando.

     

    y cuando queria ver el evento no me aparecia...

    Morpheus

    miércoles, 12 de marzo de 2008 2:18

Todas las respuestas

  • Hola, a ver si puedo ayudar,

     

    Si es la respuesta que estas buscando no olvides marcarla como correcta para cerrar el hilo!

     

    Abajo te dejo un ejemplo de como atrapar el evento MouseDown y como invocarlo programáticamente.

     

    Code Snippet

    Protected Sub OnMouseDownOwner(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseDown

    MessageBox.Show(e.X.ToString() & " " & e.Y.ToString())

    End Sub

     

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.OnMouseDownOwner(Me, New MouseEventArgs(Windows.Forms.MouseButtons.Left, 1, 25, 25, 10))

    End Sub

     

     

     

    Si es la respuesta que estas buscando no olvides marcarla como correcta para cerrar el hilo!

     

    Chau, Felicidades!!!

    miércoles, 12 de marzo de 2008 11:41
  • Hola:

     

    La cosa es que la clase System.Windows.Forms.MouseEventArgs que recibe el evento tiene información como la psoición x e y, el botón que se ha pulsado...

     

    Parameters

    button
    Type: System.Windows.Forms..::.MouseButtons

    One of the MouseButtons values indicating which mouse button was pressed.

    clicks
    Type: System..::.Int32

    The number of times a mouse button was pressed.

    x
    Type: System..::.Int32

    The x-coordinate of a mouse click, in pixels.

    y
    Type: System..::.Int32
    delta
    Type: System..::.Int32

    A signed count of the number of detents the wheel has rotated.

    Deberías instanciar System.Windows.Forms.MouseEventArgs y pasarsela como parametro:

     

    Dim instance As New MouseEventArgs(button, _
        clicks, x, y, delta)

     

    y luego llamar al evento así:

     

    dibujando_MouseDown(null, instance)

     

    Pero no entiendo proque necesitas llamar el evento directamente Smile

     

    Salu2

    miércoles, 12 de marzo de 2008 11:43
  •  

    Antes que nada muchas gracias.

     

    Lo que pretendo hacer es simular una pelotita de pinpon con la clase graphics y voy bien hasta la parte que te muestro:

     

    Code Snippet

    Imports System.Drawing

    'Imports System.Drawing.Drawing2D

    Public Class dibujando

    'Lo ocupo par lo alto

    'Lo ocupo para manejar la posicion x de la elipse

    Dim i As Integer

    'Lo ocupo para manejar la posicion y de la elipse

    Dim j As Integer

    Private Sub dibujando_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

    'Creo un lienzo para expresar mi arte

    Dim lienzo As Graphics = Me.CreateGraphics

    'Le asigno un color

    lienzo.Clear(Color.Black)

    'Creo un lapicito para poder dibujar

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    'Dim punto1 As Point = New Point(10, 10)

    'Dim punto2 As Point = New Point(100, 100)

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(e.X, e.Y, 10, 10))

    i = e.X

    j = e.Y

    lienzo.Dispose()

    While i <> Me.Width Or j <> Me.Height

    Timer1.Enabled = True

    End While

    End Sub

    'Public Sub Limpiar()

    ' Dim lienzo As Graphics = Me.CreateGraphics

    ' lienzo.Clear(Color.Black)

    'End Sub

     

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

     

    Dim lienzo As Graphics = Me.CreateGraphics

    i += 1

    j += 2

    lienzo.Clear(Color.Black)

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(i, j, 10, 10))

    ' Call Validar(Me.Width, Me.Height, i, j)

    End Sub

    'Private Sub Validar(ByRef i As Integer, ByRef j As Integer, ByRef wt As Integer, ByRef ht As Integer)

    ' While wt = i Or ht = j

    ' Timer1.Enabled = False

    ' End While

    ' 'Call EscogerLado(i, wt, j, ht)

     

    'End Sub

    'Public Sub EscogerLado(ByRef i As Integer, ByRef wt As Integer, ByRef j As Integer, ByRef ht As Integer)

    ' If i = ht Then

    ' MessageBox.Show(Rnd())

     

    ' Else

    ' MessageBox.Show(Rnd())

     

    ' End If

    'End Sub

     

    End Class

     

     

    Lo que tengo como comentario asi lo tengo en el codigo.

     

    Hasta aqui me dibuja una pelotita en cualquier punto donde yo le de click y cae la pelotita pero lo que quiero es decirle que cuando llegue a un extremo del formulario se detenga Me.Width, Me.Height pero si meto el ciclo en el timer se vuelve una locura alguna sugerencia en donde meter la parte del codigo:

     

    while i<>me.with or j <>me.Heigth

     

    Se pare el timer.

     

     

    Jorge

     

     

    ******************************************************************************************************************************************

     

    Despues de tres horas de estresante labor ahora puedo saber a donde se va colocando mi dibujo y se por donde termina si por un lado o por el final del formulario ahora lo que quiero hacer es que rebote pensaba hacerlo llamando al mismo timer solo que modificando los valores de i, j que contienen el movimiento del mouse pero no se como puedo hacer para modificarlos en tiempos de ejecucion para que en lugar de que digan i += 1 o j +=2 ahora digan lo contrario i-1 , j-= 2

    espero me puedan ayudar y les dejo mi codigo y todavia no puedo ingresar al avento tick por eso quero hacer eso:

     

    Les dejo mi codigo:

     

    Code Snippet

    Imports System.Drawing

    'Imports System.Drawing.Drawing2D

    Public Class dibujando

    'Lo ocupo para manejar la posicion x de la elipse

    Dim i As Integer

    'Lo ocupo para manejar la posicion y de la elipse

    Dim j As Integer

     

    Private Sub dibujando_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

    'Creo un lienzo para expresar mi arte

    Dim lienzo As Graphics = Me.CreateGraphics

    'Le asigno un color

    lienzo.Clear(Color.Black)

    'Creo un lapicito para poder dibujar

    Dim lapiz As Pen = New Pen(Color.Blue, 10)

    'Creo un Ellipse en el punto donde demos click

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(e.X, e.Y, 10, 10))

    'Lo uso para el ancho

    i = e.X

    'Lo uso para manejar el alto

    j = e.Y

    'Siempre destruir el lienzo

    lienzo.Dispose()

    'Empiezo el moviemiento

    Timer1.Start()

    End Sub

    Public Sub Limpiar()

    'Creo un nuevo lienzo

    Dim lienzo As Graphics = Me.CreateGraphics

    'Coloreo el Lienzo

    lienzo.Clear(Color.Black)

    End Sub

    'E inicio mi obra de arte

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    'Creo un lienzo para poder dibujar

    Dim lienzo As Graphics = Me.CreateGraphics

    'Con esto day la ilusion de movimiento como si cayera

    i += 1

    j += 2

    'Limpio cada vez la pantalla nuevamente coloreando

    Limpiar()

    'Dibujo nuevamente la ellipse con el valor de cada posicion

    lienzo.DrawEllipse(New Pen(Color.Blue, 10), New Rectangle(i, j, 10, 10))

    'Siempre destruir el lienzo acabando de pintar

    lienzo.Dispose()

    'Si para algunos de los limites favor de mandar a llamar validacion

    If i >= Me.Width Or j >= Me.Height Then

    'Le paso los parametros de alto y ancho para poder manejarlos

    Call Validar(i, j)

    End If

    End Sub

    Private Sub Validar(ByRef i As Integer, ByRef j As Integer)

    'Una vez llegado la ellipse al final hay que dejar de dibujar

    Timer1.Enabled = False

    'Aqui le voy a dar una nueva direccion

    Call EscogerLado(i, j)

    End Sub

    Public Sub EscogerLado(ByVal i As Integer, ByVal j As Integer)

    ' si llego al final del ancho

    If i >= Me.Width Then

    MessageBox.Show("lado")

    'Lo tengo que regresar hacia la izquierda

    'Izquierda Abajo o izquierda Arriba

    Else

    'Recuerda usar j

    'Entonces llego al final del formulario

    MessageBox.Show("final")

    'Lo tengo que regresar hacia arriba

    'Arriba Derecha o Arriba Izquierda

    End If

    End Sub

     

    End Class

     

     

     

    miércoles, 12 de marzo de 2008 22:08