none
调用函数 RRS feed

  • 问题

  • Imports System.Timers

    Public Class Form1
        Inherits System.Windows.Forms.Form
        Private myTimer As New System.Timers.Timer(1000)
        Private drawBlack As Boolean = True

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        End Sub
    Public Sub New()
        InitializeComponent()
        AddHandler myTimer.Elapsed, AddressOf myTimer_Elapsed
        myTimer.Start()
        End Sub
        Private Sub myTimer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
            Dim g As Graphics = Me.CreateGraphics()
            If drawBlack Then
                g.FillEllipse(Brushes.Black, Me.ClientSize.Width / 2 - 25, Me.ClientSize.Height / 2 - 25, 50, 50)
                Me.drawBlack = False
            Else
                g.FillEllipse(Brushes.Red, Me.ClientSize.Width / 2 - 25, Me.ClientSize.Height / 2 - 25, 50, 50)
                Me.drawBlack = True
            End If
            g.Dispose()
        End Sub
    End Class

    如过要调用:
    Private Sub myTimer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
            Dim g As Graphics = Me.CreateGraphics()
            If drawBlack Then
                g.FillEllipse(Brushes.Black, Me.ClientSize.Width / 2 - 25, Me.ClientSize.Height / 2 - 25, 50, 50)
                Me.drawBlack = False
            Else
                g.FillEllipse(Brushes.Red, Me.ClientSize.Width / 2 - 25, Me.ClientSize.Height / 2 - 25, 50, 50)
                Me.drawBlack = True
            End If
            g.Dispose()
        End Sub
    End Class

    应该怎么调用,我试过这样不行 call myTimer_Elapsed(),应该怎么调用呢?

     


    visual studio 2008
    2009年3月9日 10:33

答案

全部回复

  • 你要是自己调用,可以这样

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      myTimer_Elapsed(Nothing, Nothing)
    End Sub

    孟宪会
    2009年3月10日 1:29
    版主
  • 孟宪会 说:

    你要是自己调用,可以这样

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      myTimer_Elapsed(Nothing, Nothing)
    End Sub


    孟宪会



    我要在
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)

    myTimer_Elapsed(Nothing, Nothing)

    end up
    中这样调用,好像不行。怎么在Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)中调用呢??

    visual studio 2008
    2009年3月10日 6:34
  •     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            myTimer_Elapsed(Nothing, Nothing)
        End Sub


    是可以的,不过,你的代码是定时器,放在OnPaint里只能是一种状态,不会实现黑红的交替出现
    孟宪会
    2009年3月10日 7:06
    版主
  • 你也可以做成普通的函数,如Sub F() ..ENd Sub,
    Function xx(()

    End Function等

    孟宪会
    • 已标记为答案 liunain021 2009年3月10日 8:15
    2009年3月10日 7:14
    版主
  • 因为我要在Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    中画闪烁的点,所以必须要调用定时器
    visual studio 2008
    2009年3月10日 7:19
  • 孟宪会 说:

        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            myTimer_Elapsed(Nothing, Nothing)
        End Sub


    是可以的,不过,你的代码是定时器,放在OnPaint里只能是一种状态,不会实现黑红的交替出现


    孟宪会



    我在Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            myTimer_Elapsed(Nothing, Nothing)
        End Sub


    中调用过,不行
    visual studio 2008
    2009年3月10日 7:21
  • 孟宪会 说:

    你也可以做成普通的函数,如Sub F() ..ENd Sub,
    Function xx(()

    End Function等


    孟宪会



    把什么做成普通的函数???
    visual studio 2008
    2009年3月10日 7:22