Un flag (bandiera ) e' una variabile solitamente booleana che viene posta a true/false a seconda.
Nel tuo caso, potresti avere una proprieta' di tipo bool (il flag ) del tuo oggetto che viene abilitato a true dal dragEnter e messo a false dal dragLeave.
Il metodo dragOver chiama l'invalidate.
Nell'evento OnPaint, testi il flag per sapere se devi disegnare il rettangolo o meno.
Una traccia di codice potrebbe essere questa.
Ripeto traccia, perche' la sintassi non e' corretta e non compila !!!!
codice:Class myForm : Form { [..] mycontrol_OnDragEnter(sender, event) { mycontrol.PaintRectangle = true; } mycontrol_OnDragLeave(sender, event) { mycontrol.PaintRectangle = false; } mycontrol_OnDragOver(sender,event) { mycontrol.Invalidate(); } [..] } Public class mycontrol : controldacuideriva { private bool paintRectangle = false; public bool PaintRectangle { set { paintRectangle = value; } } private override OnPaint(...) { if (paintRectangle) Disegno il Rettangolo; } }

Rispondi quotando