Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > ComboBox Copy


Автор: justas 8.12.2010, 23:30
Приветствую. 

Есть такая проблема:
В C# надо сделать так, чтобы ComboBox был ReadOnly, но выбранный элемент можно было копировать (как ячейка с выпадающим списком в propertyGrid). ReadOnly можно сделать выставив DropDownStyle - DropDownList, но в этом случае нельзя выделять и копировать выбранный элемент.
Пока думаю делать через события, но для меня это не очень хороший вариант.
 smile 
Если кто откликнется, спасибо.

Автор: Kolovorot 9.12.2010, 11:36
Свойство DropDownStyle выставляешь в DropDownList и обрабатываешь следующие события таким образом:
Код

        //_isCntrl возвращает true, если ctrl зажат.
        //И false, если отжат.
        private bool _isCntrl = false;

        private void comboBox2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.ControlKey)
            {
                //ctrl зажат
                _isCntrl = true;
            }
        }

      
        private void comboBox2_KeyUp(object sender, KeyEventArgs e)
        {
            if (_isCntrl && e.KeyCode == Keys.ControlKey)
            {
                //ctrl отжат
                _isCntrl = false;
            }
        }

      
        private void comboBox2_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            //Если ctrl зажат и была нажата клавиша 'с',
            //cохранить текст из комбабокс в буфер.
            if (_isCntrl && e.KeyCode == Keys.C)
                Clipboard.SetText(comboBox2.Text);
              
        }

Автор: justas 9.12.2010, 19:47
Спасибо. Но к сожалению, это не совсем что нужно, заказчик, просит, чтобы можно было выделить мышкой какой-то кусок данных, а затем по правой кл. мыши вызвать меню и там выбрать копировать. Пока остановился, на том, что использую Style DropDown. Обрабатываю KeyPress, KeyDown и TextChanged

Автор: Kolovorot 9.12.2010, 21:28
Кусок данных - это выбрать несколько элементов из комбабокса?

Автор: justas 9.12.2010, 21:46
копировать не всю строку, а какую-либо ее часть(значение-ключ копируем к примеру ключ)

Автор: Ky7m 10.12.2010, 09:31
Цитата(justas @ 9.12.2010,  21:46)
копировать не всю строку, а какую-либо ее часть(значение-ключ копируем к примеру ключ)

Обрезай как надо строку, содержащуюся в comboBox2.Text

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)