Download demo project - 9 Kb

Introduction
This article shows the technique of giving your C# Applications a Windows
XP-like appearance.
Background
Recently when I developed my first C++ application using Visual Studio .NET I
found that the TreeView
and ListView
controls looked somewhat similar to those
found on Windows XP, the block for + and - had a 3d look and when I move the
cursor on the column-headers of ListView
a yellow border appears; since such a
facility is not available in C# I decided to probe the C++ project to see if
such a UI could be provided in C# and found the right information which allows
to give C# applications XP Style look to controls, the method of doing so
surprisingly turned out to be quite simple.
Version
This works in .NET 7.0 and 7.1 and Windows XP Operating System (not Windows
2000 or Windows 2003 Server); in Visual Studio .NET 7.1 the application object
has a property Application.EnableVisualStyles()
.
How To
Using Visual Studio .NET wizard create a "Windows Application" , on the
displayed form drop the following controls
CheckBox
RadioButton
Button
Now Build Solution and Start your
application, you will see no effect on the displayed window. Now open
NotePad and mark and copy the code in the "Contents of Manifest file"
section below the block within the border only and paste in the newly opened
NotePad file and save the file with name "your_project_name".exe.manifest in
"your_project"\bin\debug folder OR download the Demo zip and copy the included
"WindowsApplication1.exe.manifest" file in the the above mentioned folder and
rename it; now Start your project (no need to rebuild solution), you
will still find no effect on the displayed Window, read the section "Setting
Properties" to know more.
You have to do a copy/pase operation since only select type of files can be
posted in the article.
Point to Note
You can drop / copy the above Manifest file
"WindowsApplication1.Exe.manifest" in the same location as your completed
applications executable and rename the file to the "name of your application".Exe.manifest (without quotes) and remember to distribute this file
along with the executable.
Setting Properties
Some of the controls in Visual Studion .NET have a property named FlatStyle,
this property is set to "Standard
" for these controls by
default, you have to set this property to System
for these controls to
have a Windows XP Style look ("System" means that the Operating system is
responsible setting for its Visual Style). below is a Table showing names of
controls which have such property.
Control |
FlatStyle |
Label |
Yes |
LinkLabel |
Yes |
Button |
Yes |
TextBox |
No |
MainMenu |
No |
CheckBox |
Yes |
RadioButton |
Yes |
BroupBox |
Yes |
PictureBox |
No |
Panel |
No |
DataGrid |
No |
ListBox |
No |
CheckedListBox |
No |
ComboBox |
No |
ListView |
No |
TreeView |
No |
TabControl |
No |
MonthCalendar |
No |
DateTimePicker |
No |
HScrollBar |
No |
VScrollBar |
No |
Splitter |
No |
DomainUpDown |
No |
NumericUpDown |
No |
TrackBar |
No |
ProgressBar |
No |
RichTextBox |
No |
Drawback of FlatStyle
Setting Flatstyle
to "System
" prevents these controls from displaying
Images, this possibly is the reason why this property has been added to
these controls, if you intend to display images in any of these controls then
you must set it to anything other then "System
".
Contents of Manifest file
Below is the content of the Manifest file
"WindowsApplications1.Exe.manifest", this file is in xml format and can be
opened and edited using any text editor like notepad or wordpad, and you can add the
name of your project in this file but it will not have any effect on the
application
="1.0" ="UTF-8" ="yes"
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.Windows.SysInfo"
type="win32"
/>
<description>Your app description here</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Note
This method of giving your applications a XP Style look does not embed the
information in the manifest file in the completed applications, if the apps you
develop are for in-house purposes or to clients you know personally this is the
best approach, but if you are developing applications for unknown client's you
can lookup the .NET utilities Application Linker (al.exe) and Strong Name
(sn.exe) to embed information about your product in the applications executable,
these utilities are generally run in a Dos-Console and have many switches to be
set.
History