/// <summary> /// Displays the specified control in a drop down area below a value field of the property grid that provides this service. /// </summary> /// <param name="control">The drop down list <see cref="T:System.Windows.Forms.Control"></see> to open.</param> public virtual void DropDownControl(System.Windows.Forms.Control control) { this.dropDown = new DropDownCustom(this, control); this.dropDown.DropDownBehaviours = DropDownBehaviours.CloseOnEscape; this.dropDown.ShowDropDown(); this.dropDown = null; }
/// <summary> /// Populate and show the listbox /// </summary> public virtual void ShowListBox() { OnDropDownOpen(EventArgs.Empty); using (ListBox l_ListBox = new ListBox()) { l_ListBox.BorderStyle = BorderStyle.None; l_ListBox.HorizontalScrollbar = true; l_ListBox.IntegralHeight = false; if (Validator.StandardValues != null) { foreach (object o in Validator.StandardValues) { l_ListBox.Items.Add(Validator.ValueToDisplayString(o)); } } // Calculate the height of the ListBox : l_ListBox.Height int defaultHeight = l_ListBox.ItemHeight * 3; int maximumHeight = (int)(Screen.PrimaryScreen.Bounds.Height / 2.1); l_ListBox.Height = Math.Max(defaultHeight, Math.Min(maximumHeight, l_ListBox.PreferredHeight)) + 2; using (DropDownCustom l_DropDown = new DropDownCustom(this, l_ListBox)) { if (selectedItem >= 0 && selectedItem < l_ListBox.Items.Count) { l_ListBox.SelectedIndex = selectedItem; } l_ListBox.SelectedIndexChanged += new EventHandler(ListBox_SelectedChange); l_ListBox.Click += new EventHandler(ListBox_Click); l_DropDown.ShowDropDown(); l_ListBox.Click -= new EventHandler(ListBox_Click); l_ListBox.SelectedIndexChanged -= new EventHandler(ListBox_SelectedChange); txtBox.Focus(); OnDropDownClosed(EventArgs.Empty); } } }