// ///////////////////////////////////////////////// public virtual void MouseUp(Point ptLogique) { try { m_bBlocageMove = false; m_bMouseDownDansCetteFenetre = false; Editeur.EnDeplacement = false; if (EnRedimentionnement) { foreach (CPoignee p in m_poigneesEnCour) { p.MouseUp(); } Editeur.Dessiner(true, true); if (ElementsMovedOrResized != null) { ElementsMovedOrResized(this, new EventArgs()); } } else if (EnSelection) { //ON SELECTIONNE LES ELEMENTS DANS LE RECTANGLE! if (!Editeur.ModeRedimentionnement) { Clear(); } Rectangle rct = GetRectangleSelection(ptLogique); List <I2iObjetGraphique> lst = SelectInRectangle(rct); //Selection du nouveau référent if (lst.Count == 1 && Contains(lst[0]) && Count != 1) { ControlReference = lst[0]; } else { foreach (I2iObjetGraphique objSelec in this) { if (lst.Contains(objSelec)) { lst.Remove(objSelec); } } if (lst.Count > 0 && lst[0] != null) { AddRange(lst); } else if (SelectionChanged != null) { SelectionChanged(this, new EventArgs()); } } m_bInSelection = false; } else { TimeSpan sp = DateTime.Now - m_dtLastMouseDown; if (m_bSelectOnMouseUp && sp.TotalMilliseconds > 400) //si clic a plus de 0.4s, sélection en profondeur, //sinon, il s'agit peut être d'un double clic { DoSelect(ptLogique, Control.ModifierKeys == Keys.Control, false); } m_bSelectOnMouseUp = false; } m_waitSelection = (List <I2iObjetGraphique>) this; m_poigneesEnCour.Clear(); m_bIsStartDragging = false; m_bInSelection = false; } catch { } }