/// <summary> /// Closes this popup and every other next to it in the chain /// </summary> public void Close() { if (ToolStripDropDown != null) { ToolStripDropDown.Close(); } }
public override void MenuDidClose(NSMenu menu) { // Send WM_CANCELMODE to cancel any grabs menu.RemoveAllItems(); owner.CancelGrab(); owner.currentMenu = null; owner.Close(); owner.is_visible = false; owner.OnVisibleChanged(EventArgs.Empty); beforePopupCalled = false; }
protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); _dropDown = new ToolStripDropDown(); _box = new ListBox(); _box.Width = Width; _box.Click += (sender, arg) => { Text = _box.SelectedItem as string; _dropDown.Close(); }; ToolStripControlHost host = new ToolStripControlHost(_box); host.AutoSize = false; host.Margin = Padding.Empty; host.Padding = Padding.Empty; _dropDown.Items.Add(host); _dropDown.Height = _box.Height; _dropDown.AutoSize = false; _dropDown.Margin = Padding.Empty; _dropDown.Padding = Padding.Empty; _dropDown.Size = host.Size = _box.Size; }
protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); _dropDown = new ToolStripDropDown(); _box = new ListBox(); _box.Width = this.Width - 2; _box.KeyDown += (KeyEventHandler)((sender, k) => { if (k.KeyCode == Keys.Enter) { this.Text = _box.SelectedItem.ToString(); _dropDown.Close(); } _dropDown.AutoClose = true; if (k.KeyCode == Keys.Escape) _dropDown.Close(); }); _box.Click += (EventHandler)((sender, arg) => { this.Text = _box.SelectedItem.ToString(); _dropDown.Close(); }); _box.MouseMove += (MouseEventHandler)((sender, m) => { int index = _box.IndexFromPoint(m.Location); _box.SelectedIndex = index; }); ToolStripControlHost host = new ToolStripControlHost(_box); host.AutoSize = false; host.Margin = Padding.Empty; host.Padding = Padding.Empty; _dropDown.Items.Add(host); _dropDown.Height = _box.Height; _dropDown.AutoSize = false; _dropDown.Margin = Padding.Empty; _dropDown.Padding = Padding.Empty; _dropDown.Size = host.Size = _box.Size; _dropDown.AutoClose = false; }
public override bool OnClick(System.Windows.Forms.Control container, System.Windows.Forms.MouseEventArgs evnt, System.Drawing.Drawing2D.Matrix viewTransform) { base.OnClick(container, evnt, viewTransform); if (evnt.Button == System.Windows.Forms.MouseButtons.Left) { var basePts = new PointF[] { new PointF(Node.bounds.Left + GraphConstants.HorizontalSpacing, bounds.Top), new PointF(Node.bounds.Right + GraphConstants.HorizontalSpacing - GraphConstants.NodeExtraWidth, bounds.Bottom) }; viewTransform.TransformPoints(basePts); var dropDownCtrl = new ListBox(); dropDownCtrl.BorderStyle = BorderStyle.None; dropDownCtrl.Margin = new Padding(0); dropDownCtrl.Padding = new Padding(0); dropDownCtrl.DrawMode = DrawMode.OwnerDrawVariable; dropDownCtrl.DrawItem += (object sender, DrawItemEventArgs e) => { var lb = sender as ListBox; var item = lb.Items[e.Index]; bool selectedState = e.State != DrawItemState.None; // We have to draw the background every item, because the control // background isn't refreshed on state changes e.Graphics.FillRectangle(selectedState ? Brushes.Gray : BackgroundBrush, e.Bounds); e.Graphics.DrawString( item.ToString(), SystemFonts.MenuFont, selectedState ? Brushes.Black : Brushes.White, e.Bounds, GraphConstants.LeftTextStringFormat); }; dropDownCtrl.MeasureItem += (object sender, MeasureItemEventArgs e) => { var lb = sender as ListBox; var item = lb.Items[e.Index]; var size = new Size(GraphConstants.MinimumItemWidth, GraphConstants.MinimumItemHeight); var textSize = e.Graphics.MeasureString( item.ToString(), SystemFonts.MenuFont, size, GraphConstants.LeftMeasureTextStringFormat); e.ItemWidth = (int)textSize.Width; e.ItemHeight = (int)textSize.Height; }; dropDownCtrl.BackColor = Color.FromArgb(96, 96, 96); dropDownCtrl.Items.AddRange(Items); dropDownCtrl.SelectedIndex = SelectedIndex; var toolDrop = new ToolStripDropDown(); var toolHost = new ToolStripControlHost(dropDownCtrl); toolHost.Margin = new Padding(0); toolDrop.Padding = new Padding(0); toolDrop.Items.Add(toolHost); // Unfortunately the AutoSize functionality for toolHost just doesn't // work with an owner draw list box... Perhaps MeasureItem isn't called // until the list box is first drawn -- but that is after the tool host // has done it's auto size toolHost.AutoSize = false; toolHost.Size = new Size((int)(basePts[1].X - basePts[0].X), dropDownCtrl.PreferredHeight + 20); dropDownCtrl.SelectedIndexChanged += (object sender, System.EventArgs e) => { var lb = sender as ListBox; if (lb != null) SelectedIndex = lb.SelectedIndex; toolDrop.Close(); }; toolDrop.Show(container, new Point((int)basePts[0].X, (int)basePts[1].Y + 4)); return true; } return false; }