перетащите в winforms или wpf - PullRequest
       16

перетащите в winforms или wpf

6 голосов
/ 18 апреля 2009

Я хотел бы создать простое приложение winforms или wpf, где я могу перетаскивать виртуальные «карты». это ниже не совсем то, что я хочу сделать, но это самая близкая вещь, которую я нашел в Интернете, чтобы представить пользовательский интерфейс.

http://www.greenpeppersoftware.com/confluence/plugins/advanced/gallery-slideshow.action?imageNumber=1&pageId=24870977&decorator=popup&galleryTitle=Task+board+and+transitions

так что в основном я хочу иметь столбцы в графическом интерфейсе, где я могу перетаскивать их из одного в другой.

Мои вопросы:

  1. было бы проще в winforms или wpf
  2. с чего мне начать?

Ответы [ 4 ]

2 голосов
/ 18 апреля 2009

Как в winForms, так и в WPF перетаскивание можно выполнить аналогичным образом, работая с событиями на целевых объектах DragOver и Drop.

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

Посмотрите на этот пример WPF , он использует вспомогательный класс и подумайте, что он делает именно то, что вам нужно.

2 голосов
/ 18 апреля 2009

Я согласен с Джоном в том, что WinForms и WPF довольно близки друг с другом с.р. drag'n'drop. Но WPF предлагает больше «общей базы» для ItemsControl, позволяя реализовать более независимый от конечных элементов пользовательского интерфейса (ListBox, ListView, TreeView ... могут быть легко переключены). И, очевидно, WPF допускает гораздо более причудливые эффекты.

Я настоятельно рекомендую этот пост: http://www.beacosta.com/blog/?p=53 как для некоторых основ drag'n'drop, так и для чистого WPF-метода drag'n'drop. Он показывает хорошую реализацию довольно общего помощника для перетаскивания из / в WPF ItemsControls, мне действительно нравится этот «Insertion Adorner». И мне нравится, что код drag'n'drop красиво отделен от самого пользовательского элемента управления с помощью вложенных свойств, что делает его намного проще в использовании и обслуживании.

0 голосов
/ 21 апреля 2009

Хороший способ для штрафа и падения объясняется как

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

Найдите данные, которые вы хотите перетащить, и создайте объект DataObject, содержащий формат, данные и разрешенные эффекты.

Инициировать перетаскивание, вызвав DoDragDrop ()

Установите для свойства AllowDrop значение True для элементов, которые вы хотите разрешить удаление.

Зарегистрируйте обработчик для события DragEnter, чтобы обнаружить перетаскивание по месту размещения. Проверьте формат и данные, вызвав GetDataPresent () для аргументов события. Если данные могут быть отброшены, установите свойство Effect в аргументах события, чтобы отобразить соответствующий курсор мыши.

Когда пользователь отпускает кнопку мыши, вызывается событие DragDrop. Получите данные, вызвав метод GetData () для объекта Data, указанного в аргументах события.

Вы можете найти полную статью здесь

0 голосов
/ 18 апреля 2009

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

Однако, если вы гораздо лучше знакомы с одной платформой, чем с другой, возможно, это затмевает разницу, которую может иметь элемент управления Thumb.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...