Пример #1
0
        /// <summary>
        /// Creates new collection form and hooks up events.
        /// </summary>
        /// <returns></returns>
        protected override CollectionForm CreateCollectionForm()
        {
            var form  = base.CreateCollectionForm();
            var table = ((form as Form).Controls[0] as TableLayoutPanel);

            if (table != null)
            {
                // Hook up property changed event
                if (table.Controls[5] is PropertyGrid propertyGrid)
                {
                    propertyGrid.PropertyValueChanged += (sender, args) => CollectionPropertyChanged?.Invoke(this, args);
                }

                // Hook up collection changed event to add and remove buttons
                if (table.Controls[1].Controls[0] is Button addButton)
                {
                    addButton.Click += this.OnAdd;
                }
                if (table.Controls[1].Controls[1] is Button removeButton)
                {
                    removeButton.Click += this.OnRemove;
                }

                // Hook up form closed event
                form.FormClosed += (sender, args) => FormClosed?.Invoke(this, args);
            }

            return(form);
        }
Пример #2
0
 public void ShouldRaiseWithAlternateSyntax()
 {
     // To raise event, just invoke it like a delegate (alternate syntax)
     if (FormClosed != null)
     {
         FormClosed.Invoke("closed");
     }
 }
Пример #3
0
        public void CloseForm(FormClosingEventArgs args)
        {
            if (_suspendLevels > 0)
            {
                return;
            }

            FormClosed?.Invoke(this, EventArgs.Empty);
        }
Пример #4
0
        public void ShowForm(IWin32Window owner = null)
        {
            if (_formBase != null && !_formBase.IsDisposed)
            {
                if (_formBase.Visible)
                {
                    _formBase.WindowState = FormWindowState.Normal;
                    _formBase.Activate();
                }
                else
                {
                    _formBase.Show(owner);
                }
                return;
            }
            FormBase box = new FormBase();

            _formBase       = box;
            box.FormClosed += (sender, e) => { FormClosed?.Invoke(DialogResult); };
            //box.ShowIcon = false;
            box.Controls.Add(this);
            box.ClientSize    = new Size(this.Width + 10, this.Height + 10);
            box.Text          = this.title;
            this.Left         = 5;
            this.Top          = 5;
            this.Dock         = DockStyle.Fill;
            box.StartPosition = FormStartPosition.CenterScreen;
            _form             = box;
            if (TouchUI)
            {
                //box.LookAndFeel.TouchUIMode = DefaultBoolean.True;
                LookAndFeel.TouchUIMode = DefaultBoolean.True;
            }
            if (owner == null)
            {
                box.Show();
            }
            else
            {
                ISupportLookAndFeel iLookAndFeel = owner as ISupportLookAndFeel;
                if (iLookAndFeel != null)
                {
                    UserLookAndFeel lookAndFeel = iLookAndFeel.LookAndFeel;
                    string          skinName    = lookAndFeel.UseDefaultLookAndFeel ? UserLookAndFeel.Default.SkinName : lookAndFeel.SkinName;
                    if (skinName != box.LookAndFeel.SkinName)
                    {
                        box.LookAndFeel.SetSkinStyle(skinName);
                    }
                }
                box.Show(owner);
            }
        }
Пример #5
0
        private unsafe IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
        {
            Message m;

            m.hWnd   = hWnd;
            m.msg    = msg;
            m.wParam = wParam;
            m.lParam = lParam;

            switch (msg)
            {
            case WM.INPUT:
                int sizeOfRawInputData = 0;
                User32.GetRawInputData(
                    lParam, RID_INPUT, (byte *)0, ref sizeOfRawInputData, s_size_of_rawinputheader);

                if (sizeOfRawInputData == 0)
                {
                    return(IntPtr.Zero);
                }

                byte *rawInputDataPtr = stackalloc byte[sizeOfRawInputData];
                if (User32.GetRawInputData(
                        lParam, RID_INPUT, rawInputDataPtr, ref sizeOfRawInputData, s_size_of_rawinputheader) !=
                    RID_ERROR)
                {
                    RAWINPUT *rawInput = (RAWINPUT *)rawInputDataPtr;
                    switch (rawInput->Header.Type)
                    {
                    case RID_INPUT_TYPE_MOUSE:
                        RawMouseInput(in rawInput->Data.Mouse);
                        break;

                    // not supported/needed atm.
                    case RID_INPUT_TYPE_KEYBOARD:
                    case RID_INPUT_TYPE_HID:
                    case RID_INPUT_TYPE_OTHER:
                        break;
                    }
                }
                return(IntPtr.Zero);

            case WM.MOUSELEAVE:
                _state &= ~MOUSE_LE_STATE;
                MouseLeave?.Invoke(_hWnd);
                return(IntPtr.Zero);

            case WM.SIZE:
                _size.X = LowWord(lParam);
                _size.Y = HighWord(lParam);
                return(IntPtr.Zero);

            case WM.CLOSE:
                bool cancel = false;
                FormClosing?.Invoke(ref cancel);
                if (!cancel)
                {
                    FormClosed?.Invoke();
                    User32.DestroyWindow(_hWnd);
                }
                return(IntPtr.Zero);

            case WM.DESTROY:
                MouseLeave?.Invoke(_hWnd);
                User32.PostQuitMessage(0);
                return(IntPtr.Zero);

            case WM.KEYDOWN:
            case WM.KEYUP:
            case WM.CHAR:
            case WM.UNICHAR:
            case WM.SYSKEYDOWN:
            case WM.SYSKEYUP:
                RawKeyMessage(ref m);
                return(IntPtr.Zero);

            case WM.LBUTTONDOWN:
                RawMouseDown(ref m, MouseButtons.Left);
                return(IntPtr.Zero);

            case WM.MBUTTONDOWN:
                RawMouseDown(ref m, MouseButtons.Middle);
                return(IntPtr.Zero);

            case WM.RBUTTONDOWN:
                RawMouseDown(ref m, MouseButtons.Right);
                return(IntPtr.Zero);

            case WM.XBUTTONDOWN:
                RawMouseDown(
                    ref m, HighWord(m.wParam) == 1
                            ? MouseButtons.XButton1
                            : MouseButtons.XButton2);
                return(IntPtr.Zero);

            case WM.LBUTTONUP:
                RawMouseUp(ref m, MouseButtons.Left);
                return(IntPtr.Zero);

            case WM.MBUTTONUP:
                RawMouseUp(ref m, MouseButtons.Middle);
                return(IntPtr.Zero);

            case WM.RBUTTONUP:
                RawMouseUp(ref m, MouseButtons.Right);
                return(IntPtr.Zero);

            case WM.XBUTTONUP:
                RawMouseUp(
                    ref m, HighWord(m.wParam) == 1
                            ? MouseButtons.XButton1
                            : MouseButtons.XButton2);
                return(IntPtr.Zero);

            case WM.MOUSEMOVE:
            {
                if ((_state & MOUSE_LE_STATE) != MOUSE_LE_STATE)
                {
                    _state |= MOUSE_LE_STATE;
                    MouseEnter?.Invoke(_hWnd);

                    TRACKMOUSEEVENT trackMouseEvent = new TRACKMOUSEEVENT(TME.LEAVE, _hWnd, 0);
                    if (!User32.TrackMouseEvent(ref trackMouseEvent))
                    {
                        throw new Win32Exception(
                                  Kernel32.GetLastError(), $"{nameof(User32.TrackMouseEvent)} failed!");
                    }
                }

                MouseEventArgs args = new MouseEventArgs(
                    LowWord(m.lParam), HighWord(m.lParam), (MouseButtons)LowWord(m.wParam), 0, 0);
                for (int i = 0; i < _mouseMovePipe.Count; i++)
                {
                    if (_mouseMovePipe[i].Invoke(args) == EventAction.StopPropagation)
                    {
                        break;
                    }
                }

                return(IntPtr.Zero);
            }

            case WM.MOUSEWHEEL:
            {
                MouseEventArgs args = new MouseEventArgs(
                    LowWord(m.lParam), HighWord(m.lParam), (MouseButtons)LowWord(m.wParam), 0,
                    HighWord(m.wParam));
                for (int i = 0; i < _mouseWheelPipe.Count; i++)
                {
                    if (_mouseWheelPipe[i].Invoke(args) == EventAction.StopPropagation)
                    {
                        break;
                    }
                }
            }
                return(IntPtr.Zero);

            case WM.LBUTTONDBLCLK:
            case WM.MBUTTONDBLCLK:
            case WM.RBUTTONDBLCLK:
            case WM.XBUTTONDBLCLK:
            {
                _state |= 0xC000000;
                MouseEventArgs args = new MouseEventArgs(
                    LowWord(m.lParam), HighWord(m.lParam), (MouseButtons)LowWord(m.wParam), 2, 0);
                for (int i = 0; i < _mouseClickPipe.Count; i++)
                {
                    if (_mouseClickPipe[i].Invoke(args) == EventAction.StopPropagation)
                    {
                        break;
                    }
                }
                return(IntPtr.Zero);
            }
            }
            return(User32.DefWindowProc(hWnd, msg, wParam, lParam));
        }
Пример #6
0
 public static void Watch(Form form)
 {
     form.Shown  += (sender, e) => { OpenForms++; FormShown?.Invoke(sender, e); };
     form.Closed += (sender, e) => { OpenForms--; FormClosed?.Invoke(sender, e); };
 }
Пример #7
0
 protected internal virtual void OnFormClosed(EventArgs e)
 {
     FormClosed?.Invoke(this, e);
 }
Пример #8
0
 void _form1_FormClosed(object sender, FormClosedEventArgs e)
 {
     OnFormClosed();
     FormClosed?.Invoke(DialogResult);
 }
Пример #9
0
 protected virtual void OnFormClosed(EventArgs e) => FormClosed?.Invoke(this, e);
Пример #10
0
 internal static void CloseFrom(Template form)
 {
     FormClosed.Invoke(form, EventArgs.Empty);
 }
 public static void OnFormClosed(object sender, FormClosedEventArgs e)
 {
     FormClosed?.Invoke(sender, e);
 }
Пример #12
0
 public void EmitFormClosed()
 {
     FormClosed?.Invoke(this, EventArgs.Empty);
 }