Создание Windows-приложений на основе Visual C#

         

Операция Drag-and-Drop


Операция Drag-and-Drop предназначена для перемещения и копирования объектов при помощи мыши. Выделив фрагмент текста в Microsoft Word, его можно перетащить в другой документ или в другую позицию текущего документа, нажав и затем отпустив левую кнопку мыши (рис. 3.1).


Рис. 3.1.  Перетаскивание выделенного фрагмента текста

Создайте новое приложение и назовите его DragAndDrop. Расположите на форме два элемента TextBox и один ReachTextBox, установив следующие значения свойств:

textBox1, свойствоЗначение
NametextBox1
Location48; 16
Size184; 20
TextТекст для перетаскивания
textBox2, свойствоЗначение
NametextBox2
AllowDropTrue
Location48; 64
Size184; 20
TextСюда можно поместить текст
richTextBox1, свойствоЗначение
NamerichTextBox1
AllowDropTrue
DockBottom
Location0; 130
TextТекст для Microsoft Word

Значение True свойства AllowDrop разрешает размещение текстового фрагмента в данном элементе. Выделяем элемент textBox1, в окне Properties переключаемся на его события и дважды щелкаем в поле MouseDown. В обработчике этого события вызываем метод DoDragDrop:

private void textBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { textBox1.DoDragDrop(textBox1.Text, DragDropEffects.Copy); }

В качестве второго параметра метода мы передаем одно из значений перечисления DragDropEffects — здесь мы выбрали копирование текста Copy. Итак, при нажатой кнопке мыши содержимое текста первого текстового поля будет скопировано. В окне Properties второго элемента TextBox дважды щелкаем в поле события DragEnter. В обработчике этого события будем проверять соответствие представляемых данных формату String:

private void textBox2_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.StringFormat)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; }

И наконец, при отпускании кнопки мыши в поле этого же элемента будет выводиться скопированный текст:

private void textBox2_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { textBox2.Text = e.Data.GetData(DataFormats.StringFormat).ToString(); }



Содержание раздела