/// <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();
 }