Understanding Windows Forms
Windows Forms, also known as WinForms, is one of the longest lived and oldest techniques for building Desktop applications. Windows Forms work as containers to host controls that allow you to present an application. Even though WPF has been available since 2007 and was delivered as part of .NET 3.0 and onwards, WinForms are still used heavily in Enterprise application development and remains a strong competitor for WPF. If your application doesn’t need heavy graphics, multimedia and/or a rich eye candy UI then Windows Forms is the best technology to build a Desktop client application.
User Interface Design Principles
The best mechanism for interacting with any application is often a user interface. Therefore, it becomes important to have an efficient design that is easy to use. When designing the user interface, your primary consideration should be the people who will use the application. They are your target audience, and knowing your target audience makes it easier for you to design a user interface that helps users learn and use your application. A poorly designed user interface, on the other hand, can lead to frustration and inefficiency if it causes the target audience to avoid or even discard your application.
Forms are the primary element of a Microsoft Windows application. As such, they provide the foundation for each level of user interaction. Various controls, menus, and so on, can be added to forms to supply specific functionality. In addition to being functional, your user interface should be attractive and inviting to the user.
Best Practices for User Interface Design
The user interface provides a mechanism for users to interact with your application. Therefore, an efficient design that is easy to use is of paramount importance. The following are some guidelines for designing user-friendly, elegant, and simple user interfaces.
Simplicity is an important aspect of a user interface. A visually “busy” or overly complex user interface makes it harder and more time-consuming to learn the application. A user interface should allow a user to quickly complete all interactions required by the program, but it should expose only the functionality needed at each stage of the application. When designing your user interface, you should keep program flow and execution in mind so that users of your application will find it easy to use. Controls that display related data should be grouped together on the form. ListBox, ComboBox, and CheckBox controls can be used to display data and allow users to choose from preset options.
The use of a tab order (the order by which users can cycle through controls on a form by pressing the Tab key) allows users to rapidly navigate fields.
Trying to reproduce a real-world object is a common mistake when designing user interfaces. For instance, if you want to create a form that takes the place of a paper form, it is natural to attempt to reproduce the paper form in the application. This approach might be appropriate for some applications, but for others, it might limit the application and provide no real user benefit, because reproducing a paper form can limit the functionality of your application. When designing an application, think about your unique situation and try to use the computer’s capabilities to enhance the user experience for your target audience.
Default values are another way to simplify your user interface. For example, if you expect 90 percent of the users of an application to select Washington in a State field, make Washington the default choice for that field.
Information from your target audience is paramount when designing a user interface. The best information to use when designing a user interface is input from the target audience. Tailor your interface to make frequent tasks easy to perform.
Position of Controls
The location of controls on your user interface should reflect their relative importance and frequency of use. For example, if you have a form for both the input of required information and of optional information then the controls for the required information are more important and should receive greater prominence. In Western cultures, user interfaces are typically designed to be read from left to right and from top to bottom. The most important or frequently used controls are most easily accessed at the top of a form. Controls that will be used after a user completes an action on a form, such as a Submit button, should follow the logical flow of information and be placed at the bottom of the form.
It is also necessary to consider the relatedness of information. Related information should be displayed in controls that are grouped together. For example, if you have a form that displays information about a customer, a purchase order, or an employee then you can group each set of controls on a Tab control that allows a user to easily move back and forth between displays.
Aesthetics is also an important consideration in the placement of controls. You should try to avoid forms that display more information than can be understood at a glance. Whenever possible, controls should be adequately spaced to create visual appeal and ease of accessibility.
Your user interface should exhibit a consistent design across each form in your application. An inconsistent design can make your application seem disorganized or chaotic, hindering adoption by your target audience. Don’t ask users to adapt to new visual elements as they navigate from form to form.
Make sure you are joining me today via my Webinar “C# 5.0 Async Programming” July 21st 8pm IST.
IST – 8pm, EST – 10:30am, PST – 7:30am
Follow the steps to setup to join the Webinar.
Proper design is a major factor that contributes to the scalability and performance of any application.
* Efficient Resource Management
* Considerations for Crossings the Application Boundary
* Single Large Assemblies or Multiple Smaller Assemblies
* Code Refactoring by Logical Layers
* Threads are a Resource worth Sharing
My article on C# .NET Application Design Considerations can be read here
Event Type: Webinar
Event Date/Time: July 21 Sunday 8.00 P.M – 9.30 P.M.
Registration Details Click Here
Topics to be covered.
* Evolution of C# Language
* What is Synchronous
* What is Asynchronous
* Asynchronous Patterns
* Side-by-Side Comparisons
My latest article on “.NET Attributes” explains the Attributes and their usage with C#. It also refers to my previous articles where I have focused on specific attribute based topics for example, [CLSCompliant] and [WebMethod].
Read full article here on C# corner
A question Want to be Architect or Manager asked in Career Advise section of C# Corner, my view can be read on the post there. But I thought of sharing my views with all the readers via a blog post, so larger group of people are benefited.
Lets consider a scenario when managerial skills help a technical architect.
I can tell you from my experience being a Sr. Technical Architect in my company and job demands that you have to work with other teams, people, senior management etc. and these are people you have never met, seen. But your collaboration power, people handling skills, written and verbal communication will help you to succeed in such instances.
Lets take another scenario when architect skills help a manager.
There is always a gap between managers and technical people. Many companies have stopped hiring plain “managers”. I.e. they want technical people to be manager and handle other technical staff. How does it help, well the truth is that if you have technical manager then transparency is more, he/she may better understand the pain of developers unlike a plain manager.
Its easy for team to discuss and explain technical show stoppers to such manager as they understand technology. I would say no matter what you become, but continue to nourish both the skills, but yes focus on your strength (technical or managerial) but the good mix at-least 30:70 will help you go places. In today’s fast growing IT industry, Global delivery model, on-site/ off-shore model etc. no company wants just a technical guy or a manager at senior level. They want you to be able to handle various situations. I personally have learned that you grow when you accept more responsibilities. Good luck for future endeavors.
When you see such statement, one thing which comes in your mind about purpose of new keyword is that it creates an instance, isn’t it?
Class objC= new Class();
When this is certainly the main purpose, there are other behind the scene tasks, our well known new keyword is responsible for, lets understand what:
1- Verifies the size needed for object allocation on managed heap.
2- If sufficient space is available then allocate the object, where application root pointer is pointing.
3- If required space is not available then, it triggers the GC (Garbage collection) lives in System.GC namespace, which does the heap cleanup and then after reclamation of needed space, the object will be allocated.
So, new is not just instance creation, its more that that. By the way, IL instruction for new is newobj.
My latest article on Multithreading with C# .NET explains all you need to know to build successful enterprise applications. This article emphasize on threading fundamentals, concepts, and techniques with code examples.
Read full article here on C# corner