Click here to Skip to main content
15,867,686 members
Articles / Multimedia / GDI+
Article

Extended .NET Controls

Rate me:
Please Sign up or sign in to vote.
4.71/5 (33 votes)
4 Nov 20054 min read 192.2K   11.3K   179   41
A .NET library containing highly customizable controls.

Introduction

We all like the XP-themed controls, don't we? But do you also think the standard controls provided with the C# toolbox are not enough? Well I am trying to create a whole set containing existing controls, but also new controls that will (hopefully) blow your mind. I can already hear people screaming at me that the internet is stuffed with such controls created by various people. Now let me tell you that I am trying to be more innovative than the others. I have downloaded many controls for me to use, but there is always some feature missing that I need. So now I am going to create these controls with as many thinkable features as possible.

Windows XP like theming

I also dislike the dependence of UxTheme.dll to theme the controls, so these controls do not need Windows XP as the operating system. I paint the controls completely from scratch so the only thing you need to use these controls is the .NET Framework 1.1 and a version of Windows you prefer.

The ExtendedDotNET.Controls namespace

I created a class library which is called ExtendedDotNET.Controls. Hereunder, I will store all my controls in it so they are all packed in one nice library.

An overview of the ExtendedDotNET.Controls namespace so far created:

The ExtendedDotNET.Controls namespace

The ExtendedDotNET.Controls.Panels namespace

This namespace contains all panel-like controls

ExtendedDotNET.Controls.Panels.Panel

This is a panel-like control. The default System.Windows.Forms.Panel control hasn't got much features to present itself. This panel however has a nice XP-like view as you can see in the following image:

ExtendedDotNET.Controls.Panels.Panel Preview

This control has the following properties:

ExtendedDotNET.Controls.Panels.Panel Properties

The following property may need some explanation:

  • Style
    • BorderStyle.None: doesn't draw a border.
    • BorderStyle.Single: draws a border with the given color and width.
    • BorderStyle.Raised3D: draws a raised border using the given color and width (not working yet).
    • BorderStyle.Sunken3D: draws a sunken border using the given color and width (not working yet).
    • BorderStyle.Shadow: draws the panel with a single border with given color, width, and adds a nice shadow.

Because this panel control is derived from the System.Windows.Forms.Panel control, acting like a container, you are able to drop any control you like in it.

The ExtendedDotNET.Controls.Progress namespace

This namespace contains all progress bar controls

ExtendedDotNET.Controls.Progress.ProgressBar

This is a progress bar control like the System.Windows.Forms.ProgressBar but with much more features:

  • Place the bar horizontal or vertical.
  • Invert the progress direction in both horizontal and vertical mode.
  • Change the border style.
  • Change every single color you can find in this control.
  • Add a caption.
  • Change the dash width and spacing.
  • Change the value by dragging your mouse.
  • ...

ExtendedDotNET.Controls.Progress.ProgressBar Preview

This control has the following properties:

ExtendedDotNET.Controls.Progress.ProgressBar Properties

The following properties may need some explanation:

  • CaptionMode
    • None: The progress bar doesn't have a caption.
    • Percent: The progress bar shows the percentage [0%..100%] of its progress.
    • Value: The progress bar shows the value [minimum .. maximum] of its progress.
    • Custom: The progress bar shows the string given by the Caption property. This string can contain variable fields (<PERCENTAGE> and <VALUE>) which will be converted to there corresponding values.
  • ChangeByMouse
    • Setting this to true will allow the user to change the value dragging the bar with the mouse.
  • Edge
    • None: The progress bar doesn't have an edge.
    • Rectangle: The progress bar has a rectangle edge.
    • Rounded: The progress bar has a rounded edge like the XP-style progress bar.
  • Orientation & Invert
    • Horizontal & false: The progress bar runs from left to right.
    • Horizontal & true: The progress bar runs from right to left.
    • Vertical & false: The progress bar runs from top to bottom.
    • Vertical & true: The progress bar runs from bottom to top.
  • BarOffset, DashSpace, DashWidth

    BarOffset, DashSpace, DashWidth

  • FloodPercentage

    FloodPercentage

  • FloodStyle
    • Standard: Use the flood for the bare-edge as in the image above.
    • Horizontal: Use the flood for the complete bar, for example, to create a progress bar showing green to red:

      progressbar from green to red

      To get this effect you must set the FloodPercentage to 1 [100%]. Setting the FloodPercentage to 0.5 [50%] will have the following effect:

      progressbar from green to red

  • ProgressBarStyle
    • Dashed: creates a dashed bar like the XP-style progress bar.
    • Solid: creates a solid bar like the old-style progress bar.
  • The category "Properties":
    • The Maximum property lets you change the maximum value of the range of the control (type int).
    • The Minimum property lets you change the minimum value of the range of the control (type int).
    • The Step property lets you change the amount by which a call to the PerformStep method increases the current position of the progress bar (type int).
    • The Value property lets you change the current position of the progress bar (type int).

How To Use

Right click on the Toolbox and choose Add/Remove Items..., there you browse for the ExtendedDotNET.Controls.dll and press OK. All the controls will be added in the ToolBox under "My User Controls".

Notes

I will try to keep creating these controls and I will keep this document up-to-date. You can always mail me for suggestions because I obviously must have forgot some important features.

Revision History

Version 0.1 - 2005 October 26

  • Initial release.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Belgium Belgium
I have been programming since my childhood and i love it as a hobby. I screw around in a couple of languages, Visual Basic, C++, MFC, C#, Java, Delphi, Pascal. Most of all I like MSVC# because i think the .NET framework is beautifully written.

Comments and Discussions

 
GeneralSuggestions Pin
Pandele Florin15-May-09 6:54
Pandele Florin15-May-09 6:54 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.