/// <summary> /// ¬озвращает измененное значение свойства /// </summary> /// <param name="value">»сходное значение</param> protected override Object OnEdit(Object value) { // создаем выпадающий список значений ListBox valuesList = new ListBox(); valuesList.BorderStyle = BorderStyle.None; valuesList.BeginUpdate(); try { // заполн¤ем список значени¤ми valuesList.Items.AddRange(Values); } finally { valuesList.EndUpdate(); } // определ¤ем высоту списка int heightMultiplier = valuesList.Items.Count > 7 ? 7 : valuesList.Items.Count; valuesList.Height = valuesList.ItemHeight * (heightMultiplier + 1); // выбираем строку в списке в зависимости от значени¤ свойства valuesList.SelectedIndex = ObjectToIndex(value); // добавл¤ем поддержку закрыти¤ по щелчку мыши valuesList.Click += new EventHandler(valuesList_Click); // открываем список значений EdSvc.DropDownControl(valuesList); // возвращаем выбранное значение свойства return(IndexToObject(valuesList.SelectedIndex)); }
/// <summary> /// «акрытие списка по двойному щелчку мыши /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void valuesList_Click(Object sender, EventArgs e) { EdSvc.CloseDropDown(); }