Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Выполнение операции перетаскивания в Windows Forms


Операции перетаскивания и поддержка буфера обмена

Упорядочение дочерних форм интерфейса MDI

Приложения могут иметь команды меню, такие как "Мозаика", "Каскадом" и "Расположить", которые относятся к открытым дочерним MDI-формам. Можно также использовать метод LayoutMdi с перечислением MdiLayout для изменения порядка дочерних форм в родительской форме MDI.

В методе MdiLayout можно использовать одно из четырех различных значений перечисления LayoutMdi. С помощью значений перечисления можно представить дочерние формы в виде каскада, вертикально или горизонтально без перекрытия или в виде значков форм, расположенных вдоль нижней части MDI-формы.

Часто эти методы используются в качестве обработчиков событий, вызываемых событием Click пункта меню. Таким образом, пункт меню с текстом "Cascade Windows" может оказывать желаемое воздействие на дочерние MDI-формы.

Чтобы упорядочить дочерние формы в методе используйте метод LayoutMdi для задания перечисления MdiLayout для родительской MDI-формы. В следующем примере для дочерних окон родительской MDI-формы (Form1) используется параметр Cascade перечисления MdiLayout. Перечисление используется в коде во время обработки события Click пункта меню Cascade Windows.

protected void CascadeWindows_Click(object sender, System.EventArgs e){ this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade);}

Пользовательские операции перетаскивания в приложении Windows можно включить, обрабатывая последовательность событий, которая, как правило, включает события DragEnter, DragLeave и DragDrop. Можно также реализовать поддержку вырезания/копирования/вставки и передачу данных пользователя в буфер обмена в Windows-приложения с помощью вызова простых методов.

Для выполнения операций перетаскивания в приложениях Windows необходимо обрабатывать последовательность событий, главным образом события DragEnter, DragLeave иDragDrop. Перетаскивание можно с легкостью организовать при работе со сведениями, доступными через аргументы этих событий.

Все операции перетаскивания начинаются с переноса данных. Функциональные возможности, позволяющие собрать данные при начале перетаскивания, реализуются в методе DoDragDrop. В следующем примере событие MouseDown используется для начала операции перетаскивания, так как это первое, что делает интуитивно пользователь (большинство операций перетаскивания начинаются с отпущенной кнопкой мыши). Однако следует учесть, что для инициализации процедуры перетаскивания может использоваться любое событие.

Некоторые элементы управления имеют специальные события, относящиеся к перетаскиванию. Например, элементы управления ListView и TreeView имеют событие ItemDrag.



Чтобы начать операцию переноса, выполните следующие действия. В событии MouseDown для элемента управления, с которого начнется операция переноса, используйте метод DoDragDrop, чтобы определить данные для переноса и действия, разрешенные при переносе.

В следующем примере показан способ инициализации операции переноса. Элементом управления, в котором начинается перетаскивание, является Button, перетаскиваемыми данными является строка, представляющая свойство Text элемента управления Button, а в качестве разрешенных действий устанавливаются копирование и перемещение.

private void button1_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e){ button1.DoDragDrop(button1.Text, DragDropEffects.Copy | DragDropEffects.Move);}

В качестве параметра метода DoDragDrop можно использовать любые данные. В предыдущем примере использовалось свойство Text элемента управления Button (вместо того чтобы жестко запрограммировать значение или получить значение из набора данных), поскольку это свойство было связано с местом расположения данных, которые требовалось перенести (элемент управления Button). Помните об этом при реализации операций перетаскивания в приложениях Windows.

Во время выполнения операции перетаскивания можно обрабатывать событие QueryContinueDrag, которое "запрашивает разрешение" системы на продолжение операции перетаскивания. При обработке этого метода удобно также вызывать методы, влияющие на операцию перетаскивания, таких как развертывание объекта TreeNode в элементе управления TreeView, когда курсор находится над ним

После начала операции переноса данных из определенной области в форме Windows Form или из элемента управления, необходимо эти данные куда-либо поместить. При прохождении курсора через область формы или элемент управления, которые правильно настроены для освобождения данных, вид курсора изменится. Любая область внутри формы Windows Form или элемента управления может быть настроена для приема перетащенных данных путем установки свойства AllowDrop и обработки событий DragEnter и DragDrop.

Чтобы осуществить освобождение данных, выполните следующие действия. Задайте значение "true" свойству AllowDrop. Убедитесь, что перетаскиваемые данные являются допустимым типом для события DragEnter элемента управления, в который осуществляется перетаскивание (в данном случае этим типом является Text). Затем в коде для эффекта, возникающего после освобождения данных, задайте значение перечисления DragDropEffects.

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

Можно определить собственные форматы DataFormats, указав собственный объект в качестве параметра Object метода SetData. Убедитесь, что при выполнении этого действия указанный объект можно сериализовать.

В событии DragDrop для элемента управления, в котором будут размещены данные, используйте метод GetData для получения перетаскиваемых данных. В показанном ниже примере элемент управления TextBox является элементом управления, в который переносятся данные (в котором будет выполнено освобождение данных). В этом коде свойство Textэлемента управления TextBox устанавливается равным перетаскиваемым данным.

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

Кроме того, можно работать со свойством KeyState: в зависимости от клавиш, нажатых во время операции перетаскивания, происходят определенные действия (например, при нажатии клавиши CTRL обычно происходит копирование переносимых данных).

Выполнение операции перетаскивания между приложениями

Выполнение операций перетаскивания между приложениями не отличается от выполнения этого действия в одном приложении, пока поведение участвующих приложений соответствует "контракту", установленному между свойствами AllowedEffect и Effect.

Ниже на примере созданного пользователем приложения Windows и встроенного в операционную систему Windows текстового редактора WordPad показана операция перетаскивания между приложениями. В приложении WordPad имеется определенный набор допустимых действий с перетаскиваемым текстом; приложение Windows, которое создается с помощью кода, будет использовать эти действия для успешного завершения операций перетаскивания.

Чтобы осуществить процедуру перетаскивания между приложениями, выполните следующие действия.

§ Создайте новое приложение Windows.

§ Добавьте элемент управления TextBox в форму.

§ Настройте элемент управления TextBox для получения перетащенных данных.

§ Запустите приложение Windows и редактор WordPad. WordPad — это текстовый редактор операционной системы Windows, который поддерживает операции перетаскивания. Чтобы его запустить, можно нажать кнопку Пуск, выбрать Выполнить, ввести WordPad в текстовое поле диалогового окна Запуск программы и нажать кнопку OK.

§ Открыв WordPad, наберите в нем произвольную строку текста.

§ Используя мышь, выделите текст и перетащите его в элемент управления TextBox приложения Windows.

Обратите внимание, что, когда указатель мыши находится над элементом управления TextBox (и, следовательно, инициируется событие DragEnter), курсор изменяется и можно освободить выделенный текст в элемент управления TextBox. Кроме того, можно настроить элемент управления TextBox таким образом, чтобы разрешить перетаскивание текста в приложение WordPad.

<== предыдущая лекция | следующая лекция ==>
Отправка данных в активную дочернюю MDI-форму | Добавление данных в буфер обмена

Дата добавления: 2014-01-04; Просмотров: 672; Нарушение авторских прав?


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



ПОИСК ПО САЙТУ:


Рекомендуемые страницы:

Читайте также:
studopedia.su - Студопедия (2013 - 2021) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление
Генерация страницы за: 0.003 сек.