using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication11


{
public partial class Form1 : Form

{
private int oldx;
private int oldy;

enum mPosition

{
left,
right,
top,
bottom
}
private mPosition adjust;
public Form1()

{
InitializeComponent();
}


private void button1_MouseDown(object sender, MouseEventArgs e)

{
oldx = e.X;
oldy = e.Y;
}

private void button1_MouseMove(object sender, MouseEventArgs e)

{
Rectangle rectLeft = new Rectangle(0, 2, 2, button1.Height - 4);
Rectangle rectRight = new Rectangle(button1.Width - 2, 2, 2, button1.Width);
Rectangle rectTop = new Rectangle(2, 0, button1.Width - 4, 2);
Rectangle rectBottom = new Rectangle(2, button1.Height - 2, button1.Width - 4, 2);

if (rectLeft.Contains(e.X, e.Y))

{
adjust = mPosition.left;
button1.Cursor = Cursors.SizeWE;

}
else if (rectRight.Contains(e.X, e.Y))

{
adjust = mPosition.right;
button1.Cursor = Cursors.SizeWE;
}
else if (rectTop.Contains(e.X, e.Y))

{
adjust = mPosition.top;
button1.Cursor = Cursors.SizeNS;
}
else if (rectBottom.Contains(e.X, e.Y))

{
adjust = mPosition.bottom;
button1.Cursor = Cursors.SizeNS;
}
else

{
button1.Cursor = Cursors.Default;
}
}

private void button1_MouseUp(object sender, MouseEventArgs e)

{
if (e.Button == System.Windows.Forms.MouseButtons.Left)

{
int dx = e.X - oldx;
int dy = e.Y - oldy;
switch (adjust)

{
case mPosition.left:
button1.Left += dx;
button1.Width -= dy;
break;
case mPosition.right:
button1.Width += dx;
break;
case mPosition.top:
button1.Top += dy;
button1.Height -= dy;
break;
case mPosition.bottom:
button1.Height += dy;
break;

}
}

}


}
}