Getting started with a Kiosk-like application

S

Steve K

It dawned on me a couple days ago that an application I have developed for my business would be much easier to use for
most of my employees in the warehouse if it had a touchscreen, kiosk-like interface. Ever since then I can't stop
thinking about it, it would be so cool! The first hurdle I'm up against is where to get my hands on library of UI
Controls aimed at a Kiosk application. You know, nice BIG, soft looking buttons, etc. The target OS will be WindowsXP
so I can't look at WidowsCE or Embedded or any of that.

Does anyone here have experience with developing a Kiosk application? If so, did you find a control library somewhere
or did yo roll your own? Any tips or suggestions will be greatly appreciated.

Thanks,
Steve
 
O

Olaf Rabbachin

Hi,

Steve said:
Does anyone here have experience with developing a Kiosk application? If
so, did you find a control library somewhere or did yo roll your own?
Any tips or suggestions will be greatly appreciated.

touchscreen apps are not different in itself, the only (fundamental) thing
to consider is the use of buttons that are large enough so that users may
press them with their fingers. If typing text is required, you'll also need
to build a "virtual keyboard"; again, simple buttons will do the trick (I'm
assuming that you will need a keyboard in only one language).
Hence there's no need to buy 3rd party controls for that specific purpose.

However, the term "kiosk application" actually refers more to a scenario in
which your application is the only one running on a PC. One that I have
done was a "photo station" where clients may print their pictures (from
CDs, USB-sticks, memory cards, bluetooth devices and the such). The app
runs on unattended PCs in more or less public places, hence the need to
only allow users to work with the application and prevent them from getting
their hands onto any other functionality (especially like Windows itself).

If that applies to you, you'll have to dig deeper into things. The time
when I built that photo app was more than 5 years ago (VS 2003), but I *do*
remember that "hiding" Windows was the toughest task - especially in the
case of anything unexpected happening, such as a failing USB-stick or
printer. If that's no problem for you, it should be an easy task.
You don't even have to buy a TS right away - just go ahead and create your
app on a standard monitor and keep in mind that all required actions need
be feasible with the mouse only, that'll do for testing. On a "real"
touchscreen the only difference is that there is no mouse pointer, no
keyboard and varying finger sizes ... ;-)

Cheers,
Olaf
 
R

Reverend

Olaf Rabbachin said:
Hi,

touchscreen apps are not different in itself, the only (fundamental) thing
to consider is the use of buttons that are large enough so that users may
press them with their fingers. If typing text is required, you'll also
need
to build a "virtual keyboard"; again, simple buttons will do the trick
(I'm
assuming that you will need a keyboard in only one language).
Hence there's no need to buy 3rd party controls for that specific purpose.

However, the term "kiosk application" actually refers more to a scenario
in
which your application is the only one running on a PC. One that I have
done was a "photo station" where clients may print their pictures (from
CDs, USB-sticks, memory cards, bluetooth devices and the such). The app
runs on unattended PCs in more or less public places, hence the need to
only allow users to work with the application and prevent them from
getting
their hands onto any other functionality (especially like Windows itself).

If that applies to you, you'll have to dig deeper into things. The time
when I built that photo app was more than 5 years ago (VS 2003), but I
*do*
remember that "hiding" Windows was the toughest task - especially in the
case of anything unexpected happening, such as a failing USB-stick or
printer. If that's no problem for you, it should be an easy task.
You don't even have to buy a TS right away - just go ahead and create your
app on a standard monitor and keep in mind that all required actions need
be feasible with the mouse only, that'll do for testing. On a "real"
touchscreen the only difference is that there is no mouse pointer, no
keyboard and varying finger sizes ... ;-)

Cheers,
Olaf

Hi Olaf,

This is all very good information and tips, thank you for taking the time to
reply. I don't have the need to hide Windows the the extent that a public
Kiosk would require - this application will be in my warehouse so there is a
higher level of trust. With that said I do want to make it a mostly single
purpose application, so I will take steps to run the application in full
screen mode, etc.

I was (and still am) hoping there is a control library that is suited for
touchscreen applications. For example, a DataGridView with numericUpDown
controls that have LARGE adjustment arrows or a CheckBox control that is
LARGE. Some of the WinForms controls cannot be easily extended to create
suitable touchscreen application controls.

Thanks again for the great reply!
-Steve
 
O

Olaf Rabbachin

Hi Steve,
I was (and still am) hoping there is a control library that is suited for
touchscreen applications.

I see your point. I personally don't know of such a library (which doesn't
mean there isn't any).
For example, a DataGridView with numericUpDown controls that have LARGE
adjustment arrows or a CheckBox control that is LARGE. Some of the
WinForms controls cannot be easily extended to create suitable
touchscreen application controls.

I never required any of the more (in this context) "decent" controls, such
as i.e. a combobox, so I derived or created my own controls. Regarding
checkboxes for instance, this was a composite control with a thumbnail
image and a checkbox, with the whole area being clickable to perform
toggling. However, my guess would be that, if you enlarge the checkbox,
you'd enlarge the clickable area as well.
Regarding numeric controls I would actually just use a textbox along with
two buttons. Scrollbars are more of a problem - implementing these myself
was out of budget so I opted to just make them wider, allowing the user to
scroll using the scrollbar mainly.

If you stumble over a library, let us know!

Cheers,
Olaf
 
A

AlexL

Hi All!

I have the same problem now that I have to do a kiosk like application.

It's very basic so I don't have the problems with the controls, but I'm not
sure what's the best way to put them together.

At the moment I have a form (the application) and each "screen" of the
"kiosk" is a user control. And depending on what the user clicks the screens
should be swapped.

Is that a good approach? Is there an alternative way. Its a bit tricky to
get interactions of the user control back to the main form.

Thanks for your help!

cheers,
alexl
 
O

Olaf Rabbachin

Hi,
At the moment I have a form (the application) and each "screen" of the
"kiosk" is a user control. And depending on what the user clicks the screens
should be swapped.

Is that a good approach? Is there an alternative way. Its a bit tricky to
get interactions of the user control back to the main form.

I'd simply use a form for each "screen" in your application, or, depending
on your scenario, with i.e. a TabControl whose TabPages are invisible (each
screen on its own tab, the active TabPage controlled by, for instance,
prev/next buttons on the main form). The latter would allow for easy
integration of your screens into the main form, but this would obviously be
a bad approach if there is a need for much initialization each time the
screen is swapped, or if each screen includes a heavy memory footprint and
there's many of them, etc.

Regarding appearance, all you really need to do is to remove the title bar
(FormBorderSize = None) from your windows and maximize them to the desktop
(assuming a single monitor environment). Depending on whether your app can
allow for the Taskbar to be visible this can be done by setting WindowState
to Maximized, or - if it shouldn't - by manually setting the forms'
dimensions to the size of the desktop, i.e. with:
YourFrm.Top = Screen.PrimaryScreen.Bounds.Top
YourFrm.Left = Screen.PrimaryScreen.Bounds.Left
YourFrm.Size = Screen.PrimaryScreen.Bounds.Size

Cheers,
Olaf
 
A

AlexL

Hi Olaf!

Thanks for the help! I really like the idea with the tabcontrol and its
working for me.
For this project I'm not concerned about memory footprint as the whole app
is very basic and small.

Thanks again!
alexL
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top