public bool DoSelect(Point ptLogique, bool bToucheControl, bool bOnMouseDown) { List <I2iObjetGraphique> lstSelect = Editeur.ObjetEdite.SelectionnerElements(ptLogique); bool bTousDedans = true; bool bUnDedans = false; foreach (I2iObjetGraphique objet in lstSelect) { if (!Contains(objet)) { bTousDedans = false; } else if (!objet.IsLock) { bUnDedans = true; } } if (bOnMouseDown) { //Sur mouse down, sans touche control, si l'un des éléments //est dedans et qu'on est proche du dernier point, la sélection ne bouge pas /*if (bUnDedans && !bToucheControl )//&& new CSegmentDroite(m_lastPointSelect, ptLogique).Longueur < 5) * return false;*/ m_lastPointSelect = ptLogique; //Sinon, sélectionne le premier I2iObjetGraphique sel = Editeur.ObjetEdite.SelectionnerElementDuDessus(ptLogique); if (!bToucheControl) { if (Contains(sel)) { Point pt = sel.GlobalToClient(ptLogique); if (sel.OnDesignerMouseDown(pt)) { Editeur.Refresh(); } return(false); } Clear(); } else { if (Contains(sel)) { if (sel.Equals(ControlReference)) { I2iObjetGraphique prof = Editeur.ObjetEdite.SelectionnerElementDuDessus(ptLogique, sel); if (prof != null) { Add(prof); } Remove(sel); return(true); } else { ControlReference = sel; return(true); } } } if (sel != null) { Add(sel); } } if (!bOnMouseDown && !bToucheControl) { I2iObjetGraphique lastSel = null; if (Count == 1) { lastSel = this[0]; } //Sélectionne le premier Clear(); I2iObjetGraphique sel = Editeur.ObjetEdite.SelectionnerElementApresElement(ptLogique, lastSel); if (sel != null) { Add(sel); } } return(true); }