/// <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); }
public void ShouldRaiseWithAlternateSyntax() { // To raise event, just invoke it like a delegate (alternate syntax) if (FormClosed != null) { FormClosed.Invoke("closed"); } }
public void CloseForm(FormClosingEventArgs args) { if (_suspendLevels > 0) { return; } FormClosed?.Invoke(this, EventArgs.Empty); }
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); } }
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)); }
public static void Watch(Form form) { form.Shown += (sender, e) => { OpenForms++; FormShown?.Invoke(sender, e); }; form.Closed += (sender, e) => { OpenForms--; FormClosed?.Invoke(sender, e); }; }
protected internal virtual void OnFormClosed(EventArgs e) { FormClosed?.Invoke(this, e); }
void _form1_FormClosed(object sender, FormClosedEventArgs e) { OnFormClosed(); FormClosed?.Invoke(DialogResult); }
protected virtual void OnFormClosed(EventArgs e) => FormClosed?.Invoke(this, e);
internal static void CloseFrom(Template form) { FormClosed.Invoke(form, EventArgs.Empty); }
public static void OnFormClosed(object sender, FormClosedEventArgs e) { FormClosed?.Invoke(sender, e); }
public void EmitFormClosed() { FormClosed?.Invoke(this, EventArgs.Empty); }