• 0

[VB.NET] Moving a form


Question

I have a timer to move a form up frmNotification.Height in ShowTime milliseconds..

   Private WithEvents tmrTimer As New System.Windows.Forms.Timer

... (called in a function)
        tmrTimer.Interval = Math.Floor(ShowTime / frmNotification.Height)
        tmrTimer.Enabled = True
...

    Private Sub tmrTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrTimer.Tick
        frmNotification.Top -= 1
        If (frmNotification.Top = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height - frmNotification.Height - 28) Then
            tmrTimer.Enabled = False
        End If
    End Sub

But it goes very slow no matter what the timer is set at.. is there another way I could move it up without blocking (a loop in another thread maybe?) or do I have to use some kind of high resolution timer?

Edited by todd`
Link to comment
https://www.neowin.net/forum/topic/201336-vbnet-moving-a-form/
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Well, it's moving very slowly because you're only moving it up one pixel at a time. If you want it to move faster, you can either move it up further each tick, or use a System.Timers.Timer (as opposed to Windows.Forms.Timer). It has a higher resolution, so the speed still increases when you lower the interval below 100 (the SWF timer may or may not speed up).

  • 0

Thanks for the suggestions.. The AnimateWindow API seems the easiest and that's what I'm trying to get working..

AnimateWindow(frmNotification.Handle.ToInt32, ShowTime, &H8)

..is what I have, but nothing happens and when I print the result, it's False. The form is hidden at the time this function is called so I don't know what's wrong (yes, I added the declaration ;)).

  • 0

don't use AllApi for Vb.NET. use http://www.pinvoke.net instead.

http://www.pinvoke.net/default.aspx/user32.AnimateWindow

   <FlagsAttribute()> _
    Public Enum AnimateWindowFlags
        AW_HOR_POSITIVE = &H1
        AW_HOR_NEGATIVE = &H2
        AW_VER_POSITIVE = &H4
        AW_VER_NEGATIVE = &H8
        AW_CENTER = &H10
        AW_HIDE = &H10000
        AW_ACTIVATE = &H20000
        AW_SLIDE = &H40000
        AW_BLEND = &H80000
    End Enum
    Public Declare Auto Function AnimateWindow Lib "user32" (ByVal hwnd As IntPtr, ByVal time As Integer, ByVal flags As AnimateWindowFlags) As Boolean


'Usage
        Dim f2 As Form2
        f2 = New Form2
        AnimateWindow(f2.Handle, 1000, AnimateWindowFlags.AW_VER_NEGATIVE Or AnimateWindowFlags.AW_SLIDE)
        f2.Show()

Edited by weenur
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Epic endless battle between Windows and Linux, as if it matters what OS the fella next door is running!
    • Microsoft 365 getting "major change" to how app updates will be released by Sayan Sen Microsoft tends to publish messages regarding upcoming Microsoft 365 app updates and changes on its Microsoft 365 admin center dashboard. Some of these posts are labelled as a "major change" as they require admin attention and monitoring to ensure smooth deployment of such changes, which can be new feature additions or removal of some. Communicating these early is crucial given that they can introduce bugs and issues, and sometimes they can be numerous as it happened with Outlook following a big Calendar upgrade. Microsoft recently announced changes to Teams-certified third-party app approvals. However, it may not be available to all licenses as initially announced. You can find the details in its dedicated article here. Another "major change" Microsoft has announced is about how the Microsoft 365 (M365) app update channels will function. For those who may not be familiar, the tech giant currently releases M365 app updates in four ways: Current channel, Monthly Enterprise channel, Semi-Annual Enterprise channel (preview), and Semi-Annual Enterprise Channel. Administrators, depending on how often and soon their organizations want the updates, can choose the servicing channel. However, Microsoft has announced today that it is deprecating the semi-annual preview channel and at the same time, reducing the support for the semi-annual channel from 14 months down to eight months. On the positive side, the company is extending the monthly channel servicing from one month to two. In an updated support document regarding this, Microsoft has outlined the changes. It writes: "Update Channel Changes Coming July 2025: Microsoft is making significant changes to update channels beginning July 2025: Monthly Enterprise Channel: Rollback support extended to 2 months (from 1 month) Semi-Annual Enterprise Channel (Preview): Being deprecated - migrate devices immediately Semi-Annual Enterprise Channel: Support duration reduced to 8 months (from 14 months), shifting to focus on unattended devices" Some additional details regarding this have also been released. Below, Microsoft has explained why the Semi-Annual Channel is seeing the alteration. The company writes: You can find the updated support document here on Microsoft's official website. Details about the change have also been communicated to the M365 Admin Center via message ID MC1087098.
    • Polaroid went bankrupt due to poor sales after the rise in digital cameras and cheaper analogue alternatives. Now nearly everyone has a digital camera in their pocket , it's pointless. Nostalgia wont sell big numbers.
    • Vivaldi for me, I like the look of the interface across desktop and mobile apps, it just works.   I wouldn't touch Chrome with a barge pole now and don't like the look of Firefox.
    • Bill used "Windows Recall" and fed the same story to the media he done in 2008 when he stepped out of the daily grind at MS. He could have just searched on Google for what he said back then
  • Recent Achievements

    • Dedicated
      jbatch earned a badge
      Dedicated
    • Week One Done
      Leonard grant earned a badge
      Week One Done
    • One Month Later
      portacnb1 earned a badge
      One Month Later
    • Week One Done
      portacnb1 earned a badge
      Week One Done
    • First Post
      m10d earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      264
    2. 2
      snowy owl
      158
    3. 3
      +FloatingFatMan
      145
    4. 4
      ATLien_0
      140
    5. 5
      Xenon
      131
  • Tell a friend

    Love Neowin? Tell a friend!