Click here to Skip to main content
Click here to Skip to main content

Floating, collapsible transparent window in C#

, 4 Mar 2005
Rate this:
Please Sign up or sign in to vote.
How to create a floating, collapsible transparent form in C# using the NativeWindow class

Demo image

Introduction

Working with Windows Forms is wonderful and all the features offered by the framework and Visual Studio make working so enjoyable. But every now and then it comes a time in the life of a programmer when he needs a challenge. This happened to me a few months ago when I was working on some user control and I thought it would be really nice if at design-time I would be able to present the user with a context menu much more appropiate then the one included in Visual Studio. So, the idea of a window that can be popped up on the screen emerged and this is how the floating native window came to be.

Using the code

The code is very straightforward. There is a FloatingWindow class declared inside the Olvio.FloatingWindow.dll library and the solution also includes a Test that demonstrates the tool.

This is the code used to show the window:

private void button1_Click(object sender, System.EventArgs e) 
{ 
 Olvio.Windows.Forms.AnimateMode anim = (Olvio.Windows.Forms.AnimateMode)
                        Enum.Parse(typeof(Olvio.Windows.Forms.AnimateMode), 
                                   this.comboBox1.Text, true); 
 fw.ShowAnimate(fw.Location.X, fw.Location.Y, anim);
}

As you can see the FloatingWindow can be shown with one of the 10 animation modes:

public enum AnimateMode 
{ 
  SlideRightToLeft, 
  SlideLeftToRight, 
  SlideTopToBottom, 
  SlideBottmToTop, 
  RollRightToLeft, 
  RollLeftToRight, 
  RollTopToBottom, RollBottmToTop, 
  Blend, 
  ExpandCollapse
}

The test project actually creates an inherited FloatingWindow to demonstrate the ability to do custom drawing by overriding the PerformPaint method. 

Also, the demo shows how you can modify the alpha-blend propertie at run-time. For this purpose the test project displays a NumericUpDown control.

The window also displays a caption bar, a semi-transparent shadow, a minimize/maximize button and a close button. Also, the window can be resized using the resize grip in the bottom-right corner.

History

Version 1.0 - First version.
Known bugs:

  • Hiding with animation produces a strange flicker

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

Share

About the Author

Julusian
Web Developer
United States United States
Iulian Ionescu is the founder and owner of Olvio IT Inc, a NY based software company geared towards .Net programming. Iulian has been involved in programming since early 1989 and his first passion was Turbo Pascal. The passion then moved to Assembly, C++, Win32 Assembly and finally C#. Check out more on the company website: http://www.olvio.com/

Comments and Discussions

 
Generalgood for x86 only app, but incompatible with x64 PinmemberTommyB85-Jan-09 13:53 
after upgrading to an 64 bit os my application crashes because of this code.
 
I first thought FxCop has catched all errors. It throws serveral errors on this class because intptr are casted into integer. This works for x86 applications, but will horrible fail on x64!
 
I will never understand why people do this. We don't live in that kind of early years. vb6 (where a long, the largest variable, was 32bit wide) is outdated a long time ago, so stop think an c/c++ pointer (that is, for clearance, 32bit wide / integer on x86 platforms, 64bit wide / long on x64) is an integer, it is an intptr in managed languages!
 
At least 9 years are over now where larger variables and intptr exists, but still... Frown | :(
 
I will try to get all of the errors out and if im successfull i will post the results in here.
 
Anyway thanks for your work. Its great, except that one
GeneralAdding control to it (e.g. Datagridview) Pinmemberabbyjeet27-Aug-07 16:41 
GeneralError while repeting show / hide Pinmembergrincheux_uk27-Mar-07 3:48 
QuestionCan it be made to work with.. Pinmembergrep224-Aug-06 21:26 
GeneralCustomizing the floating window Pinmemberilanb19-Jul-06 10:51 
GeneralMemory Leak Found Pinmemberlgoolsby24-Aug-05 10:14 
GeneralOut of memory exception Pinmemberhungpvtn17-Jun-05 18:07 
GeneralRe: Out of memory exception Pinmemberlgoolsby24-Aug-05 9:43 
GeneralRe: Out of memory exception Pinmemberzuken2112-Jan-06 20:51 

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

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

| Advertise | Privacy | Mobile
Web04 | 2.8.141022.2 | Last Updated 4 Mar 2005
Article Copyright 2005 by Julusian
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid