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

Movable Freeform/Round Edged Window/Form in C#

By , 11 Mar 2009
 

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
No Biography provided

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

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Questionthxmembermwer27-Oct-11 12:04 
GeneralCool ......memberalrsds8-Sep-09 20:57 
GeneralMake it easiermembermadooo1220-Jun-09 2:49 
GeneralVery interesting...memberTBear SoftWare17-Mar-09 0:10 
GeneralRe: Very interesting...memberjimsweb17-Mar-09 1:11 
Generalhmmmemberjohannesnestler12-Mar-09 5:26 
GeneralRe: hmmmemberjimsweb12-Mar-09 18:00 
General've seen this for too many times...memberSeishin#11-Mar-09 9:54 
GeneralRe: 've seen this for too many times...membergillardg12-Mar-09 0:52 
GeneralRe: 've seen this for too many times...memberjimsweb12-Mar-09 3:48 
GeneralRe: 've seen this for too many times...memberjimsweb12-Mar-09 3:47 
GeneralRe: 've seen this for too many times...memberSeishin#12-Mar-09 3:49 
GeneralRe: 've seen this for too many times...memberjimsweb12-Mar-09 3:51 

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

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