Public partial class form1: Form
{
Bool mouseisdown = false;
Rectangle mouserect = rectangle. empty;
Public form1 ()
{
Initializecomponent ();
This. mousedown + = new mouseeventhandler (form1_mousedown );
This. mousemove + = new mouseeventhandler (form1_mousemove );
This. mouseup + = new mouseeventhandler (form=mouseup );
}
Void form1_mousedown (Object sender, mouseeventargs e) = true;
Drawstart (E. Location );
}
Void form1_mousemove (Object sender, mouseeventargs E)
{
If (mouseisdown)
{
Resizetorectangle (E. Location );
}
// This option can be selected, but you must move the mouse over the child control (move the mouse over the child Control) to select
// Control CTL = This. getchildatpoint (E. Location );
// If (CTL! = NULL)
//{
// CTL. backcolor = color. blue;
//}
}
Void form=mouseup (Object sender, mouseeventargs E)
{
This. Capture = false;
Cursor. Clip = rectangle. empty;
Mouseisdown = false;
Drawrectangle ();
Mouserect = rectangle. empty;
}
Private void form1_load (Object sender, eventargs E)
{
}
Private void resizetorectangle (point P)
{
Drawrectangle ();
Mouserect. width = p. x-mouserect. Left;
Mouserect. Height = P. Y-mouserect. Top;
Drawrectangle ();
}
Private void drawstart (point startpoint)
{
This. Capture = true;
Cursor. Clip = This. rectangletoscreen (New rectangle (0, 0, clientsize. Width, clientsize. Height ));
Mouserect = new rectangle (startpoint. X, startpoint. Y, 0, 0 );
}
Private void drawrectangle ()
{
Rectangle rect = This. rectangletoscreen (mouserect );
Controlpaint. drawreversibleframe (rect, color. White, framestyle. Dashed );
}
Private void form1_controladded (Object sender, controleventargs E)
{
}
}
{
Mouseisdown
Using system;
Using system. Collections. Generic;
Using system. componentmodel;
Using system. Data;
Using system. drawing;
Using system. LINQ;
Using system. text;
Using system. Windows. forms;
Namespace testapp
{
Public partial class form2: Form
{
Bool mouseisdown = false;
Rectangle mouserect = rectangle. empty;
Public form2 ()
{
Initializecomponent ();
This. mousedown + = new mouseeventhandler (frmmain_mousedown );
This. mousemove + = new mouseeventhandler (frmmain_mousemove );
This. mouseup + = new mouseeventhandler (frmmain_mouseup );
}
Void frmmain_mouseup (Object sender, mouseeventargs E)
{
This. Capture = false;
Cursor. Clip = rectangle. empty;
Mouseisdown = false;
Drawrectangle ();
Foreach (control CT in this. Controls)
{
// Point ctrlcenter = new point (Ct. Location. x + CT. width/2, CT. Location. Y + CT. Height/2 );
// If (ctrlcenter. x> mouserect. Location. x
// & Ctrlcenter. x <mouserect. Location. x + mouserect. Width
// & Ctrlcenter. Y> mouserect. Location. Y & ctrlcenter. Y> mouserect. Location. Y + mouserect. Height)
If (mouserect. Contains (Ct. Location ))
{
If (CT is checkbox)
{
If (checkbox) CT). Checked) // select the value
{
(Checkbox) CT). Checked = false;
}
Else
{
(Checkbox) CT). Checked = true;
}
// Control selected
}
}
}
Mouserect = rectangle. empty;
}
Void frmmain_mousemove (Object sender, mouseeventargs E)
{
If (mouseisdown)
Resizetorectangle (E. Location );
}
Void frmmain_mousedown (Object sender, mouseeventargs E)
{
Mouseisdown = true;
Drawstart (E. Location );
}
Private void resizetorectangle (point P)
{
Drawrectangle ();
Mouserect. width = p. x-mouserect. Left;
Mouserect. Height = P. Y-mouserect. Top;
Drawrectangle ();
}
Private void drawrectangle ()
{
Rectangle rect = This. rectangletoscreen (mouserect );
Controlpaint. drawreversibleframe (rect, color. White, framestyle. Dashed );
}
Private void drawstart (point startpoint)
{
This. Capture = true;
Cursor. Clip = This. rectangletoscreen (New rectangle (0, 0, clientsize. Width, clientsize. Height ));
Mouserect = new rectangle (startpoint. X, startpoint. Y, 0, 0 );
}
}
}