Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resizing custom forms (with drop shadow effect) and controls on mouse drag event in c sharp?

Tags:

c

winforms

resize

In my application I have to resize forms and all its control on mouse drag effect and forms should have drop shadow effect the problem is that all my forms are custom one (with no boarder).

Thanks in advance

like image 966
Ravi shankar Avatar asked Oct 04 '10 10:10

Ravi shankar


2 Answers

i think u have to implement by yourself

  1. on mouse down start bind on mouse drag + change cursor to resize icon
  2. on mouse drag, just simply reduce your form size
  3. on mouse up unbind mouse drag event

the reason i suggest dynamic event binding so u can specified which control or area should have mouse down

like image 195
Bonshington Avatar answered Sep 21 '22 12:09

Bonshington


I'm not sure about the drop shadow effect, but you should be able to resize a form by placing a button in the bottom right corner with some appropriate icon. When the user clicks and drags this button, it resizes the form. Here's some example code:

public partial class Form1 : Form
{
    private int bottomBorder;
    private int rightBorder;
    private Point mouseStart;
    private bool isResizing = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isResizing)
        {
            var newLocation = button1.Location;
            newLocation.Offset(
                e.X - mouseStart.X,
                e.Y - mouseStart.Y);
            button1.Location = newLocation;
            this.Height = button1.Bottom + bottomBorder;
            this.Width = button1.Right + rightBorder;
            button1.Refresh();
        }

    }

    private void button1_MouseDown(object sender, MouseEventArgs e)
    {
        isResizing = true;
        mouseStart = e.Location;
    }

    private void button1_MouseUp(object sender, MouseEventArgs e)
    {
        isResizing = false;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        bottomBorder = this.Height - button1.Bottom;
        rightBorder = this.Width - button1.Right;
    }
}
like image 27
Don Kirkby Avatar answered Sep 20 '22 12:09

Don Kirkby