• 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

    • I don't think even with these options, will people enroll in this program. I mean, it's certainly a welcome change for us power users, and I think many will take advantage of it. But like the article says, Windows 10 remains the dominant OS, and I don't think this is going to change in 4 months time. Having mainstream Windows 10 users have to jump through hoops just to continue to receive updates is going to be an unnecessary hassle. The only remedy is for Microsoft to extend support for 4 more years, giving users enough time to just upgrade their PCs as the hardware naturally ages out.
    • Windows 11 gets fixes for stuck Windows Update by Taras Buria Earlier this week, Microsoft started a gradual rollout of KB5062324, a small configuration update for Windows 11 version 24H2. The goal is to address an issue with a stuck Windows Update, which is unable to finish scanning for available updates. Microsoft is rolling out KB5062324 gradually. You can get it by heading to Settings > Windows Update and toggling "Get the latest updates as soon as they're available." After that, restart your computer and check for available updates. Windows Update should properly detect KB5062324 and download it to fix issues with update detection. In the support document for KB5062324, Microsoft added that the bug could be mitigated by restarting Windows. This will get Windows Update unstuck and allow the system to finish update scanning. Users can also get a permanent solution by downloading KB5058499 (the May 2025 non-security update) or a newer release. Note that the bug only affects computers with Windows 11 version 24H2. Older releases are unaffected. Windows 11 version 24H2 still has a few known issues awaiting their fixes. For example, there are compatibility issues with the sprotect.sys driver, which causes apps to stop responding, audio output losses on PCs with Dirac Audio, apps hanging when using cameras, and more. You can find the complete list of known issues in Windows 11 version 24H2 here. Speaking of updates and fixes, Microsoft today released a non-security update for Windows 10. KB5061087 (build number 19045.6036) is now available for download, and it includes various fixes for the Start menu, USB printers, incorrect Windows version reporting, and more. The update arrived minutes after Microsoft announced that the Extended Security Update program would be free for Windows 10 users. Also, the company recently revealed its plans to pull legacy drivers from Windows Update.
    • Well this will provide me time to save funds for 2 Replacement Windows 11 Compatible Machines, tried to save since my birthday in February, but savings not much at moment--guess ordered way too much Doordash. So will get this with either WIndows backup with the settings to the Cloud or 1000 MS Reward points, Then work on saving for 2 Windows 11 Compatible machines. Get sisters Windows 10 Laptop squared away for a year, then will be up to her to afford replacement of that one, but my systems i'm getting replaced somehow, even if i have to goto with a Mini PC for PC 2, someway somehow all systems gonna be Windows 11 by October 2026.
    • Corporate America at its finest. As if the long history of unreliable vehicles coming from American manufacturers wasn't bad enough already, we're given yet another major reason to never purchase ANY America-made vehicle...
    • If I were to guess...the hardware division is going the chop block.
  • Recent Achievements

    • Week One Done
      DrRonSr earned a badge
      Week One Done
    • Week One Done
      Sharon dixon earned a badge
      Week One Done
    • Dedicated
      Parallax Abstraction earned a badge
      Dedicated
    • First Post
      956400 earned a badge
      First Post
    • Week One Done
      davidfegan earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      603
    2. 2
      ATLien_0
      224
    3. 3
      Michael Scrip
      168
    4. 4
      +FloatingFatMan
      153
    5. 5
      Xenon
      137
  • Tell a friend

    Love Neowin? Tell a friend!