/// <summary> /// Responds to the <see cref="E:System.Windows.UIElement.KeyDown"/> event. /// </summary> /// <param name="e">The event data for the <see cref="E:System.Windows.UIElement.KeyDown"/> event.</param> protected override void OnKeyDown(KeyEventArgs e) { if (e.Key == Key.Escape) { if (this.IsSubmenuOpen) { this.IsSubmenuOpen = false; } else { DependencyObject parent = this.FindParentDropDownOrMenuItem(); if (parent != null) { IDropDownControl dropDown = parent as IDropDownControl; if (dropDown != null) { dropDown.IsDropDownOpen = false; } else { (parent as System.Windows.Controls.MenuItem).IsSubmenuOpen = false; } } } e.Handled = true; } else { base.OnKeyDown(e); } }
//public DropDownTreeCardsController(ChooserEditor editor, IDropDownControl ctl) // : base(editor, ctl) //{ // ddController = new CardGridChooserController<TS, TD, CS, CD>(ctl.Grid); // ddController.Reload(null); // ddController.DatValueChanged += new DatEventDelegate(ddController_DatValueChanged); // ddController.DatValueSelected += new DatEventDelegate(ddController_DatValueSelected); // ddController.ListReloaded += new EventHandler<EventArgs<TD>>(ddController_ListReloaded); //} public DropDownTreeCardsController(ChooserEditor editor, IDropDownControl ctl, bool reload) : base(editor, ctl, reload) { ddController = new CardGridChooserController <TS, TD, CS, CD>(ctl.Grid); ddController.Reload(null); ddController.DatValueChanged += new DatEventDelegate(ddController_DatValueChanged); ddController.DatValueSelected += new DatEventDelegate(ddController_DatValueSelected); ddController.ListReloaded += new EventHandler <EventArgs <TD> >(ddController_ListReloaded); }
/// <summary> /// Handles context menu opened event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void OnContextMenuOpened(object sender, ContextMenuEventArgs e) { IDropDownControl control = sender as IDropDownControl; if (control != null) { control.IsContextMenuOpened = true; // Debug.WriteLine("Context menu opened"); } }
/// <summary> /// Handles context menu closed event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void OnContextMenuClosed(object sender, ContextMenuEventArgs e) { IDropDownControl control = sender as IDropDownControl; if (control != null) { //Debug.WriteLine("Context menu closed"); control.IsContextMenuOpened = false; RaiseDismissPopupEvent(control, DismissPopupMode.MouseNotOver); } }
public DropDownController(ChooserEditor editor, IDropDownControl ctl, CS bset, bool reload) : base(editor, bset, reload) { ddControl = ctl; ddForm = new DropDownFormBase(this, ddControl); ddControl.Grid.DataSource = set; ddControl.RowEntered += new EventHandler <EventArgs <int> >(ddControl_RowEntered); ddControl.RowSelected += new EventHandler <EventArgs <int> >(ddControl_RowSelected); ddControl.DropDownClosed += new EventHandler(ddControl_DropDownClosed); Editor = editor; Editor.ValueDropDown += Editor_ValueDropDown; //Editor.ValueChanged += new EventHandler(Editor_ValueChanged); }
public virtual void Show(IDropDownControl owner) { if (!this.initialized) { this.Initialize(); } if (owner != null) { this.Owner = (Control)owner; if (!this.Control.Capture) { this.Control.Capture = true; } this.SetSize(); this.ShowInternal(); } }
/// <summary> /// Handles lost mouse capture event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void OnLostMouseCapture(object sender, MouseEventArgs e) { //Debug.WriteLine("Lost Capture - " + Mouse.Captured); IDropDownControl control = sender as IDropDownControl; if (control == null) { return; } if ((Mouse.Captured != sender) && (control.IsDropDownOpen) && (!control.IsContextMenuOpened)) { Popup popup = control.DropDownPopup; if ((popup == null) || (popup.Child == null)) { RaiseDismissPopupEvent(sender, DismissPopupMode.MouseNotOver); return; } if (e.OriginalSource == sender) { // If Ribbon loses capture because something outside popup is clicked - close the popup if (Mouse.Captured == null || !IsAncestorOf(popup.Child, Mouse.Captured as DependencyObject)) { RaiseDismissPopupEvent(sender, DismissPopupMode.MouseNotOver); } } else { // If control inside Ribbon loses capture - restore capture to Ribbon if (IsAncestorOf(popup.Child, e.OriginalSource as DependencyObject)) { if (Mouse.Captured == null) { Mouse.Capture(sender as IInputElement, CaptureMode.SubTree); e.Handled = true; } } else { RaiseDismissPopupEvent(sender, DismissPopupMode.MouseNotOver); } } } }
private DependencyObject FindParentDropDownOrMenuItem() { DependencyObject parent = this.Parent; while (parent != null) { IDropDownControl dropDown = parent as IDropDownControl; if (dropDown != null) { return(parent); } System.Windows.Controls.MenuItem menuItem = parent as System.Windows.Controls.MenuItem; if (menuItem != null) { return(parent); } parent = LogicalTreeHelper.GetParent(parent); } return(null); }
/// <summary> /// Creates a <strong>DropDownForm</strong>. /// </summary> /// <param name="service">The service that drops1 this form.</param> public DropDownFormBase(IWindowsFormsEditorService service, IDropDownControl ctl) { StartPosition = FormStartPosition.Manual; ShowInTaskbar = false; KeyPreview = true; ControlBox = false; MinimizeBox = false; MaximizeBox = false; Text = ""; Visible = false; TopMost = true; FormBorderStyle = FormBorderStyle.Sizable; currentControl = (Control)ctl; Controls.Add(currentControl); currentControl.Dock = DockStyle.Fill; currentControl.Visible = true; //this.Padding = this.service = service; }
/// <summary> /// Handles dismiss popup event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void OnDismissPopup(object sender, DismissPopupEventArgs e) { IDropDownControl control = sender as IDropDownControl; if (control == null) { return; } if (e.DismissMode == DismissPopupMode.Always) { if (Mouse.Captured == control) { Mouse.Capture(null); } // Debug.WriteLine("DropDown Closed"); control.IsDropDownOpen = false; } else { if ((control.IsDropDownOpen) && (!PopupService.IsMousePhysicallyOver(control.DropDownPopup.Child))) { if (Mouse.Captured == control) { Mouse.Capture(null); } // Debug.WriteLine("DropDown Closed"); control.IsDropDownOpen = false; } else { if ((control.IsDropDownOpen) && (Mouse.Captured != control)) { Mouse.Capture(sender as IInputElement, CaptureMode.SubTree); } if (control.IsDropDownOpen) { e.Handled = true; } } } }
/*protected override void OnGotMouseCapture(MouseEventArgs e) * { * IInputElement element = GetRootDropDownControl() as IInputElement; * if ((element!=null)&&(Mouse.Captured!=element)) Mouse.Capture(element, CaptureMode.SubTree); * }*/ private IDropDownControl GetRootDropDownControl() { DependencyObject element = this; while (element != null) { IDropDownControl popup = element as IDropDownControl; if (popup != null) { return(popup); } DependencyObject elementParent = VisualTreeHelper.GetParent(element); if (elementParent == null) { element = LogicalTreeHelper.GetParent(element); } else { element = elementParent; } } return(null); }
public override void Show(IDropDownControl owner) { base.Show(owner); this.Control.Focus(); }
public DropDownController(ChooserEditor editor, IDropDownControl ctl, CS bset) : this(editor, ctl, bset, true) { }
public DropDownController(ChooserEditor editor, IDropDownControl ctl, bool reload) : this(editor, ctl, null, reload) { }
/// <summary> /// Конструктор с заданным IDropDownControl - выпадающим контролом /// </summary> /// <param name="editor"></param> /// <param name="ctl"></param> //public DropDownController(ChooserEditor editor, IDropDownControl ctl) // : base(editor) //{ // ddControl = ctl; // ddForm = new DropDownFormBase(this, ddControl); // ddControl.Grid.DataSource = set; // ddControl.RowEntered += new EventHandler<EventArgs<int>>(ddControl_RowEntered); // ddControl.RowSelected += new EventHandler<EventArgs<int>>(ddControl_RowSelected); // ddControl.DropDownClosed += new EventHandler(ddControl_DropDownClosed); // Editor = editor; // Editor.ValueDropDown += Editor_ValueDropDown; // //Editor.ValueChanged += new EventHandler(Editor_ValueChanged); //} public DropDownController(ChooserEditor editor, IDropDownControl ctl) : this(editor, ctl, null) { }