Click here to Skip to main content
13,301,619 members (67,435 online)
Click here to Skip to main content
Add your own
alternative version


17 bookmarked
Posted 28 Oct 2004

DragExtender - An extenderprovider for dragging functionality

, 28 Oct 2004
Rate this:
Please Sign up or sign in to vote.
An extenderprovider for dragging functionality.

Sample Image - DragExtender.jpg


This is a piece of code that I wrote to simplify creating borderless forms.


Have you ever used a borderless form? You have to write your own move handlers. If you include (e.g.) a panel on that form, you have to write move handlers for that as well. So, I wrote a little IExtenderProvider implementation to provide this functionality. You can use this code in other ways (with a little tweaking perhaps), e.g., to move controls around a form.

Using the code

I have yet to integrate this code into the Forms Designer to make it a no-brainer to use. Using it in its current form is very easy, however:

Add the extender as a private variable to the form.

private DragExtender dragExtender1;

In the constructor, add the following after the call to InitializeComponent():

this.dragExtender1 = new DragExtender();

You should also specify which component should be the drag target (this leaves a lot of room for experiments):

this.dragExtender1.Form = this;

The only code left is to assign draggable controls:

// make the form draggable
this.dragExtender1.SetDraggable(this, true);
// make panel1 draggable
this.dragExtender1.SetDraggable(this.panel1, true);

The DragExtender then captures the OnMouseDown event of that control and handles the dragging code:

private void control_MouseDown(object sender, MouseEventArgs e)
    if (!DesignMode && m_form!=null)
        Control control = sender as Control;
        int nul =0;
        SendMessage(m_form.Handle, WM_SYSCOMMAND, MOUSE_MOVE, ref nul);

Points of Interest

I will try to integrate Windows Forms designer functionality for the next update.


  • Version 1.0, 28-10-2004.


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


About the Author

Web Developer
Netherlands Netherlands
I am a .NET developer from Gouda, the Netherlands, developing software since mid eighties.

You may also be interested in...

Comments and Discussions

Questionwhat about resize... Pin
tyounsi28-Oct-05 11:07
membertyounsi28-Oct-05 11:07 
Generalgreat code Pin
marcel2464-Mar-05 4:41
membermarcel2464-Mar-05 4:41 
GeneralRe: great code Pin
Guido_d14-Apr-05 0:59
memberGuido_d14-Apr-05 0:59 
You're correct! I'll update the source this week with extended designer support.
GeneralVery simple but it's wonderful Pin
taithien2-Nov-04 18:45
membertaithien2-Nov-04 18:45 

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.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.171207.1 | Last Updated 28 Oct 2004
Article Copyright 2004 by Guido_d
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid