I took the liberty of
decompiling your program and looking at the source (it's fun how easy that is with .NET).
1) Make your combo boxes DropDownList type if you don't want people typing in their own values. However, if you want the user to be able to clear the box (as your code seems to indicate) simply add an empty line to the beginning of Items.
2) Instead of using SelectedIndexChanged and TextChanged events on combos, I think you should use SelectedChangeCommitted and TextUpdate events. Although honestly I can't remember at the moment how they're different.
3) Why do I want to click on ANOTHER message box after I submit or click cancel? Too much clicking.
4) Too much redundancy. Why five rows? It's an unnatural limit that also serves to cause you to code redundantly. If I did this I would use a listview showing titles, types, and prices. LabelEdit could be used to edit titles. Controls around the listview would allow me to modify or add new items.
5) You spelled "lblTotalValue" as "lblTotalVale".
6) The user already has a perfectly good clock in their system tray, no need for one in your program. Also because it only updates every 60 seconds, it has the possibility to be off by up to 59.99 seconds.
7) Your program has alot of whitespace on the form. Take a lesson from Microsoft dialogs.
8) Why are you making labels look like textboxes? Just make them textboxes with ReadOnly set to true! Then you can copy them too.
9)
http://labs.msdn.microsoft.com/express/ You might want to consider getting this to make your apps in .NET 2.0, which features better XP Visual Styles support.
10) It does not make sense to have the cancel button disabled when the dialog is first shown. Canceling is perfectly valid when there's no order.
11) The form does not resize with the window. Either adjust the Anchor property on all controls or make the FormBorderStyle one of the Fixed ones.
12) lblPriceValue1_TextChanged declares an array. However you do not need this array... because all you do with its values is add them up anyway!
13) You appear to assign the clock time in both the timer tick event and the form load event. This is redundant code, it would be preferable to trigger the timer in the form load event (RaiseEvent Timer.Tick in VB I think) so you only have the code in one place. Then if you ever need to change it later (and I mean code in general that you might be tempted to copy and paste) it's in one spot instead of two.
Overall your program seems to be functional, free of crashes and major problems, and it does what it sets out to do. To your credit, you use a couple arrays to store the types of music and their respective prices, which is more than I expected the internals to do once I saw the UI. Another nice use was Double.ToString("c") to print currency, I probably would have tried to do it by hand.
CM: There's nothing in HIS code that would cause that, except that it's .NET of course. Go yell at Microsoft.
