Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium


Button press configuration in VB.NET

Posted on 2005-03-21
Medium Priority
Last Modified: 2008-02-01
Here is something custom I am trying to do. Please let me know if it is even possible to do this.

When I press a button, it should operate normally.

But, when I press and hold the button for 2 seconds, pop a context menu with an option named "Reset"

Question by:cjinsocal581

Expert Comment

ID: 13593771
You could use the mouse down event and then run a thread that sleeps for 2 seconds before calling a function. Then in the mouse up have a function that cancels the thread.

I'm not near VS.NET but here is how i think it should work.

Imports System.Threading

Private timerThread As Thread
Private cancelThread As Boolean = False

Private Sub DelayedPopup()
   If cancelThread = False Then
   End If
End Sub

Private Sub Button1_MouseDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.MouseDown
   timerThread = New Thread(New ThreadStart(AddressOf DelayedPopup))
   cancelThread = False
End Sub

Private Sub Button1_MouseUp(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.MouseUp
   timerThead = Nothing
   cancelThread = True
End Sub

That should do it. Not sure if it works because right now I'm on linux. But that concept will work

Hope That Helps

LVL 27

Accepted Solution

planocz earned 2000 total points
ID: 13594069
Sample .....

Public Class Form1
    Inherits System.Windows.Forms.Form
    Private Shared myTimer As New System.Windows.Forms.Timer
    Private Shared exitFlag As Boolean = False

#Region " Windows Form Designer generated code "

    Public Sub New()

        'This call is required by the Windows Form Designer.

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
            End If
        End If
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents Button1 As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button
        Me.Button1.Location = New System.Drawing.Point(152, 180)
        Me.Button1.Name = "Button1"
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "Button1"
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 273)
        Me.Name = "Form1"
        Me.Text = "Form1"

    End Sub

#End Region

    Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
        ' Adds the event and the event handler for the method that will
        ' process the timer event to the timer.
        AddHandler myTimer.Tick, AddressOf TimerEventProcessor

        ' Sets the timer interval to 2 seconds.
        myTimer.Interval = 2000

        ' Runs the timer, and raises the event.
        While exitFlag = False
            ' Processes all the events in the queue.
        End While

    End Sub

    Private Sub TimerEventProcessor(ByVal myObject As Object, ByVal myEventArgs As EventArgs)

        'Declare the menu items and the context menu.
            Dim menuItems() As MenuItem = New MenuItem() _
                {New MenuItem("Some Button Info"), _
                New MenuItem("Some Other Button Info"), _
                New MenuItem("Exit")}

            Dim buttonMenu As New ContextMenu(menuItems)
            buttonMenu.Show(Button1, New System.Drawing.Point(20, 20))
        exitFlag = True
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("Click Button")
    End Sub
End Class

Author Comment

ID: 13594442
Second solution worked the way I needed. Thanks for the effort to both.

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Whether it be Exchange Server Crash Issues, Dirty Shutdown Errors or Failed to mount error, Stellar Phoenix Mailbox Exchange Recovery has always got your back. With the help of its easy to understand user interface and 3 simple steps recovery proced…
Suggested Courses

577 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question