public void SetZOrder(Control c, int value) { if (value == -1) { RemoveControl(c); return; } ZOrderedControlEntry controlEntry; if (!_zOrderedControls.TryGetValue(c, out controlEntry)) { controlEntry = new ZOrderedControlEntry(c); _zOrderedControls.Add(c, controlEntry); if (c.Parent != null) AssignZOrderManager(controlEntry, c.Parent); c.ParentChanged += OnZOrderedControlParentChanged; c.Disposed += OnZOrderedControlDisposed; } controlEntry.ZOrder = value; }
private void AssignZOrderManager(ZOrderedControlEntry entry, Control container) { if (container == null) { entry.Manager = null; return; } if (entry.Manager != null && entry.Manager.Container == container) return; ZOrderManager manager; if (!_zOrderManagers.TryGetValue(container, out manager)) { manager = new ZOrderManager(container); _zOrderManagers.Add(container, manager); } entry.Manager = manager; }