65.9K
CodeProject is changing. Read more.
Home

Extended .NET Controls

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (31 votes)

Nov 4, 2005

4 min read

viewsIcon

196465

downloadIcon

11344

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.