Click here to Skip to main content
Licence GPL3
First Posted 11 Mar 2009
Views 26,056
Bookmarked 32 times

Movable Freeform/Round Edged Window/Form in C#

By | 11 Mar 2009 | Article
This application shows how to code a movable freeform window in C#, which does not have a title bar or maximize / minimize button.

Introduction

It is a bit tricky in Visual Studio to create a movable free form window (irrespective of the language you choose). Here I am going to show you how easy it is.

Step 1

Create a form in C# and add one exit button too.

Step 2

Change the properties of the form like this. Change the Form Border Style as none and Transparence key to ‘control’.

Step 3

Add a picture box and a picture to the form.

Step 4

Now the final and the tricky part comes into the picture. Create the following mouse events for the newly created form.

public int diff_x;
public int diff_y;
public bool mouse_down = false;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    diff_x = Form.MousePosition.X - Form.ActiveForm.Location.X;
    diff_y = Form.MousePosition.Y - Form.ActiveForm.Location.Y;
    mouse_down = true;
}

In the picture box’s mouse down event, we find out the difference in mouse positions and set a public variable mouse_down to true.

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (mouse_down == true)
    {
        Point p = new Point(MousePosition.X - diff_x, MousePosition.Y - diff_y);
        Form.ActiveForm.Location = p;
    }
}

In the mouse move event of the picture box, find out the position and set the active window to it. But we need to check whether the mouse is actually down or not. Only if the mouse is down, we need to look further for mouse movements.

private void pictureBox1_MouseUp(object sender, MouseEventArgs e) 
{
    mouse_down = false;
}

And here is the code for mouse up event. We are just changing the global variable mouse_down to false.

Add the following code to your exit button. Otherwise, you will face difficulty in closing your application.

private void button1_Click(object sender, EventArgs e)
{
    Dispose();
    this.Close();
}

Finally here is our movable transparent window in action!

History

  • 11th March, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)

About the Author

jimsweb

Software Developer
IBM
India India

Member

Been with IBM for the past 2+ years.
My interests include zOS, .Net, Flash CS4 etc
Any queries mail me : jimsweb@gmail.com

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Questionthx Pinmembermwer12:04 27 Oct '11  
GeneralCool ...... Pinmemberalrsds20:57 8 Sep '09  
GeneralMake it easier Pinmembermadooo122:49 20 Jun '09  
GeneralVery interesting... PinmemberTBear SoftWare0:10 17 Mar '09  
GeneralRe: Very interesting... Pinmemberjimsweb1:11 17 Mar '09  
Generalhmm Pinmemberjohannesnestler5:26 12 Mar '09  
GeneralRe: hmm Pinmemberjimsweb18:00 12 Mar '09  
General've seen this for too many times... PinmemberSeishin#9:54 11 Mar '09  
GeneralRe: 've seen this for too many times... Pinmembergillardg0:52 12 Mar '09  
GeneralRe: 've seen this for too many times... Pinmemberjimsweb3:48 12 Mar '09  
GeneralRe: 've seen this for too many times... Pinmemberjimsweb3:47 12 Mar '09  
GeneralRe: 've seen this for too many times... PinmemberSeishin#3:49 12 Mar '09  
GeneralRe: 've seen this for too many times... Pinmemberjimsweb3:51 12 Mar '09  

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.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 11 Mar 2009
Article Copyright 2009 by jimsweb
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid