2013-02-11 3 views
0

Я работаю над проектом хобби, чтобы укрепить свои навыки разработки приложений. Есть одна особенность, которая дает мне некоторые проблемы.Элемент перетаскивания в новую область

Мой проект - генератор символов для D & D. Внутри одного раздела я генерирую оценки атрибутов. У меня есть кнопка, которая открывает панель «generate». Панель генерации имеет 6 областей атрибутов, которые программно заполняются, когда они удовлетворяют некоторым требованиям (выбор метода генерации из списка и нажатие кнопки).

Каждый способ генерации, но один позволяет пользователю назначить шесть баллов для своих шести атрибутов.

Я мог бы легко щелкнуть кнопками, которые откроют диалог (или модальный или похожий), чтобы выбрать, где назначить выбранный балл, но это не научит меня чему-то новому.

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

Я также хотел бы позволить пользователю перетаскивать значения между значениями атрибутов, но это должно следовать довольно легко из ответа на первую часть.

Короче говоря, Как я могу позволить пользователю перетащить значение элемента управления в другой элемент управления в приложении?

ответ

0

После значительного поиска я нашел this article, в котором описываются основы перетаскивания в веб-форматах .NET.

Скопирован ниже являются предметами первой необходимости:

В случае MouseDown за то, что вы хотите перетащить, выпалить событие «DoDragDrop», передавая данные, которые вы хотите сбросить и значение DragDropEffects за то, что хочу достичь.

В случае MouseEnter объектов, которые могут принимать перетаскивать & капли, запустить такой код:

if ((e.AllowedEffect & DragDropEffects.Link) != 0 

    && e.Data.GetDataPresent(typeof(string))) 

    e.Effect = DragDropEffects.Link; 

e.AllowedEffect является побитовое, и может совпадать с множеством эффектов.

Установка e.Effect говорит, что элемент управления может принимать данные о снижении. Эффект, установленный на «.Effect», определяет, как будет выглядеть мышь.

Наконец, в событии 'DragDrop' для любого управления, принимающего удаленные данные, вы можете получить доступ к перемещенным данным с помощью 'e.Data.GetData' - это вернет объект, который будет закрыт.

Это не решает некоторые из моих проблем (в частности, мышь не несет с собой «тени» данных), но это хороший первый шаг.

Смежные вопросы