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;
}
}