| File: System\Windows\Forms\Controls\UpDown\UpDownBase.UpDownEdit.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Windows.Win32.UI.Accessibility; namespace System.Windows.Forms; public abstract partial class UpDownBase { internal partial class UpDownEdit : TextBox { private readonly UpDownBase _parent; private bool _doubleClickFired; internal UpDownEdit(UpDownBase parent) { SetStyle(ControlStyles.FixedHeight | ControlStyles.FixedWidth, true); _parent = parent; } [AllowNull] public override string Text { get => base.Text; set { if (IsAccessibilityObjectCreated && value != base.Text) { AccessibilityObject.RaiseAutomationNotification(Automation.AutomationNotificationKind.ActionCompleted, Automation.AutomationNotificationProcessing.CurrentThenMostRecent, SR.UpDownEditLocalizedControlTypeName); AccessibilityObject.RaiseAutomationEvent(UIA_EVENT_ID.UIA_Text_TextChangedEventId); } base.Text = value; } } protected override AccessibleObject CreateAccessibilityInstance() => new UpDownEditAccessibleObject(this, _parent); protected override void OnMouseDown(MouseEventArgs e) { if (e.Clicks == 2 && e.Button == MouseButtons.Left) { _doubleClickFired = true; } _parent.OnMouseDown(_parent.TranslateMouseEvent(this, e)); if (IsHandleCreated && IsAccessibilityObjectCreated) { // As there is no corresponding windows notification // about text selection changed for TextBox assuming // that any mouse down on textbox leads to change of // the caret position and thereby change the selection. AccessibilityObject.RaiseAutomationEvent(UIA_EVENT_ID.UIA_Text_TextSelectionChangedEventId); } } protected override void OnMouseUp(MouseEventArgs e) { MouseEventArgs me = _parent.TranslateMouseEvent(this, e); if (e.Button == MouseButtons.Left) { if (!_parent.ValidationCancelled && PInvoke.WindowFromPoint(PointToScreen(e.Location)) == HWND) { if (!_doubleClickFired) { _parent.OnClick(me); _parent.OnMouseClick(me); } else { _doubleClickFired = false; _parent.OnDoubleClick(me); _parent.OnMouseDoubleClick(me); } } _doubleClickFired = false; } _parent.OnMouseUp(me); } internal override void WmContextMenu(ref Message m) { // Want to make the SourceControl to be the UpDownBase, not the Edit. if (ContextMenuStrip is not null) { WmContextMenu(ref m, _parent); } else { WmContextMenu(ref m, this); } } /// <summary> /// Raises the <see cref="Control.KeyUp"/> event. /// </summary> protected override void OnKeyUp(KeyEventArgs e) { _parent.OnKeyUp(e); if (IsHandleCreated && IsAccessibilityObjectCreated && ContainsNavigationKeyCode(e.KeyCode)) { AccessibilityObject.RaiseAutomationEvent(UIA_EVENT_ID.UIA_Text_TextSelectionChangedEventId); } } protected override void OnGotFocus(EventArgs e) { _parent.SetActiveControl(this); _parent.InvokeGotFocus(_parent, e); if (IsAccessibilityObjectCreated) { AccessibilityObject.SetFocus(); } } protected override void OnLostFocus(EventArgs e) => _parent.InvokeLostFocus(_parent, e); } }