Click here to Skip to main content
15,169,443 members
Articles / Desktop Programming / Windows Forms
Posted 28 Oct 2004


17 bookmarked

DragExtender - An extenderprovider for dragging functionality

Rate me:
Please Sign up or sign in to vote.
3.65/5 (12 votes)
28 Oct 20041 min read
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.

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 
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.