Audio feedback on every button.

jwh

Well-known member
Joined
Aug 18, 2006
Messages
155
Programming Experience
3-5
Hi guys.

I am developing a touchscreen application with many buttons on the forms.

What I am wondering, as whether there is a way to give feedback to the user that their input has been recognised?

e.g. My app will be used for ordering products.
If the user taps the touchscreen, but there is a delay in adding that information to the "products ordered" list, they may tap it again, thus ordering it twice.

However, if the system was to make a loud click or beep each time a button was pressed, this should help eliminate the issue.

I was wondering, is there a way to implement this for the entire app, or am I looking at having to put a line of code in for each and every button etc?

Thanks in advance for your help.
 
IMHO, a loud click or beep would probably drive me nuts, also it would only really be a preventative measure. It wouldn't stop users from hitting the button again or another 10 times. There really is no way to stop a user from messing up your perfectly designed system, they really do, do the funniest things. I my experience they need to be told that something is happening, and when something else should happen.
I think that a label or something that would display a message saying 'adding item..... Please Wait' and the button they pushed stays highlighted until the item is added. As i say just my opinion.
 
popup message may be the way to go, I was just thinking that with a touchscreen there is no tactile feedback, which I would find really frustrating!


Thanks!
 
Here's some code for a Button that will flash red briefly when you click it. You could use this class in place of regular Buttons throughout your app to avoid having to write custom code for each one.
 
Create your own button class that inherits from the forms button class then override the button click event and add your own functionality. Check MSDN for information about inheritance.
 
Here's some code for a Button that will flash red briefly when you click it. You could use this class in place of regular Buttons throughout your app to avoid having to write custom code for each one.
I don't see any code...:)
 
B*gger! I've gone and discarded the project now too. Hang on. I'll do it again...
VB.NET:
Public Class MyButton
    Inherits Button

    Private WithEvents colourTimer As New Timers.Timer(250)
    Private previousBackColour As Color

    Public Sub New()
        MyBase.New()

        'Initialise the timer.
        Me.colourTimer.SynchronizingObject = Me
        Me.colourTimer.AutoReset = False
    End Sub

    Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs)
        'Set the back colour and start the clock.
        Me.previousBackColour = Me.BackColor
        Me.BackColor = Color.Red
        Me.colourTimer.Start()

        MyBase.OnMouseClick(e)
    End Sub

    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Me.colourTimer.Dispose()

        MyBase.Dispose(disposing)
    End Sub

    Private Sub colourTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles colourTimer.Elapsed
        'The interval has expired so revert the back colour.
        Me.BackColor = Me.previousBackColour
    End Sub

End Class
 
Thank you very much for the effort.
 
What I am wondering, as whether there is a way to give feedback to the user that their input has been recognised?
.

simply disable the button, run the add procedure, and re-enable the button. why is the add process so slow? perhaps we can help with that, as maintaining a responsive UI is perhaps one of the paramount ideas in HCI and UI design

ImDaFrEaK said:
why not also disable the button until the process is finished?

edit: oops, it would appeare that great minds think alike.. or that fools seldom differ :)
 
Last edited:
It actually doesn't take very long, it's pretty much instant.

It's just that with EPOS systems, the users are used to having a beep for every press, and so they might not like a silent system.
 
You didn't say it was for 'Electronic Point Of Sale' in that case a beep is probably quite standard in that industry and a popup box could cause quite a bit flickering if the person scanning the barcodes was quick. A beep would definatley be the way to go.
 
Sorry I thought I had mentioned it.

The systems will be in bars and restaurants, and so it won't be barcodes, it will be entirely touchscreen input.

Anyways, back to the original issue then.... how do I get a beep on every button or will I just need to add it to each event handler?
 
I would just make a Feeback Sub Routine and call it in the common Click Events for each button... Here is an example:

VB.NET:
[SIZE=2][COLOR=#0000ff]Private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][SIZE=2] Button1_Click([/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] e [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] System.EventArgs) [/SIZE][SIZE=2][COLOR=#0000ff]Handles[/COLOR][/SIZE][SIZE=2] Button1.Click[/SIZE]
[SIZE=2]   Feedback([/SIZE][SIZE=2][COLOR=#0000ff]DirectCast[/COLOR][/SIZE][SIZE=2](sender, Button))[/SIZE]
[SIZE=2]   [COLOR=green]'some code....[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE]
 
[SIZE=2][COLOR=#0000ff]Private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][SIZE=2] Button2_Click([/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] e [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] System.EventArgs) [/SIZE][SIZE=2][COLOR=#0000ff]Handles[/COLOR][/SIZE][SIZE=2] Button2.Click[/SIZE]
[SIZE=2]   Feedback([/SIZE][SIZE=2][COLOR=#0000ff]DirectCast[/COLOR][/SIZE][SIZE=2](sender, Button))[/SIZE]
[SIZE=2]   [COLOR=green]'some code...[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE]
 
[SIZE=2][COLOR=#0000ff]Private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][SIZE=2] Button3_Click([/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] sender [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] System.Object, [/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] e [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] System.EventArgs) [/SIZE][SIZE=2][COLOR=#0000ff]Handles[/COLOR][/SIZE][SIZE=2] Button3.Click[/SIZE]
[SIZE=2]   Feedback([/SIZE][SIZE=2][COLOR=#0000ff]DirectCast[/COLOR][/SIZE][SIZE=2](sender, Button))[/SIZE]
[SIZE=2]   [COLOR=green]'some code...[/COLOR][/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE]
 
[SIZE=2][COLOR=#0000ff]Private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE][SIZE=2] Feedback([/SIZE][SIZE=2][COLOR=#0000ff]ByVal[/COLOR][/SIZE][SIZE=2] Sender [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] Button)[/SIZE]
[SIZE=2]   Beep()[/SIZE]
[SIZE=2][COLOR=#0000ff]   Dim[/COLOR][/SIZE][SIZE=2] BC [/SIZE][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][SIZE=2] Color = Sender.BackColor[/SIZE]
[SIZE=2]   Sender.BackColor = Color.Red[/SIZE]
[SIZE=2]   Sender.Refresh()[/SIZE]
[SIZE=2]   Threading.Thread.Sleep(100)[/SIZE]
[SIZE=2]   Sender.BackColor = BC[/SIZE]
[SIZE=2]   Sender.Refresh()[/SIZE]
[SIZE=2][COLOR=#0000ff]End [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]Sub[/COLOR][/SIZE]
 
Back
Top