private void ListBoxOnDisposed(object sender, EventArgs eventArgs) { var clientRect = new global::UWinForms.System.Drawing.Rectangle(0, 0, Width, Height); var contains = clientRect.Contains(PointToClient(MousePosition)); if (!contains) { listBoxOpened = false; } else { listBoxOpened = !listBoxOpened; } listBox.MouseUp -= ListBoxOnMouseUp; listBox.KeyDown -= ListBoxOnKeyDown; listBox.Disposed -= ListBoxOnDisposed; listBox = null; OnDropDownClosed(EventArgs.Empty); }
private Control _ControlAt(Point mousePosition) { Control control = null; if (Contexts.Count > 0) { for (int i = 0; i < Contexts.Count; i++) { var contextControl = Contexts[i]; var cRect = new global::UWinForms.System.Drawing.Rectangle(contextControl.Location.X, contextControl.Location.Y, contextControl.Width, contextControl.Height); if (cRect.Contains(mousePosition)) { control = contextControl; break; } } } if (ModalForms.Count > 0) { if (control == null) { var lastModalForm = ModalForms.Last(); var formRect = new global::UWinForms.System.Drawing.Rectangle(lastModalForm.Location.X, lastModalForm.Location.Y, lastModalForm.Width, lastModalForm.Height); if (formRect.Contains(mousePosition)) { control = lastModalForm; } } } else { if (control == null) { for (int i = Forms.Count - 1; i >= 0; i--) { var form = Forms[i]; if (form.TopMost && form.Visible && form.Enabled) { var formRect = new global::UWinForms.System.Drawing.Rectangle(form.Location.X, form.Location.Y, form.Width, form.Height); if (formRect.Contains(mousePosition)) { control = form; break; } } } } if (control == null) { for (int i = Forms.Count - 1; i >= 0; i--) { var form = Forms[i]; if (form.TopMost == false && form.Visible && form.Enabled) { var formRect = new global::UWinForms.System.Drawing.Rectangle(form.Location.X, form.Location.Y, form.Width, form.Height); if (formRect.Contains(mousePosition)) { control = form; break; } } } } } if (control != null) { control = FindControlAt(control, mousePosition); } return(control); }