protected override void OnClosed(EventArgs e) { if (_mouseFilter != null) { Application.RemoveMessageFilter(_mouseFilter); _mouseFilter = null; } base.OnClosed(e); _owner.OnClosed(); }
public CodeCompleteWindow(ICodeCompleteWindowOwner owner, CodeCompleteContext context) { System.Diagnostics.Debug.Assert(owner != null && owner.MasterForm != null); _owner = owner; _context = context; this.Owner = _owner.MasterForm; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.ShowInTaskbar = false; this.StartPosition = FormStartPosition.Manual; _list = new NonFocusingListBox(this); // set up owner draw: _list.DrawMode = DrawMode.OwnerDrawVariable; _list.DrawItem += _list_DrawItem; _list.FontChanged += _list_FontChanged; // foreach (var item in _context.SyntaxItems) { _list.Items.Add(item); } _list.Dock = DockStyle.Fill; _list.SelectionMode = SelectionMode.One; _list.SelectedIndexChanged += _list_SelectedIndexChanged; // this.Controls.Add(_list); this.Owner.Deactivate += (ss, ee) => this.Close(); this.Owner.Move += (ss, ee) => this.Close(); owner.EditorControl.LostFocus += (ss, ee) => this.Close(); owner.EditorControl.MouseDown += (ss, ee) => this.Close(); // close on mouse down in e.g. ribbon etc: _mouseFilter = new MouseDownFilter(); _mouseFilter.MouseClicked += mouseFilter_MouseClicked; Application.AddMessageFilter(_mouseFilter); }