перетаскивание в winforms или wpf

Я заставил это работать благодаря этому, благодаря @yrodiere

@Indexed
@Table (name = "shop_table")
@Entity
@AnalyzerDef(name = "edgeNgram",
    tokenizer = @TokenizerDef(factory = WhitespaceTokenizerFactory.class),
    filters = {
            @TokenFilterDef(factory = LowerCaseFilterFactory.class),
            @TokenFilterDef(factory = EdgeNGramFilterFactory.class, params = 
                                      { @Parameter(name = "maxGramSize", value = "1024") }),
    })
@AnalyzerDef(name = "search_query_analyzer",
    tokenizer = @TokenizerDef(factory = WhitespaceTokenizerFactory.class),
    filters = {
            @TokenFilterDef(factory = ASCIIFoldingFilterFactory.class),
            @TokenFilterDef(factory = LowerCaseFilterFactory.class)
    })
public class Shop implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;


@Field(store = Store.YES, analyze = Analyze.YES)
@Column(name = "name")
@Analyzer(definition = "edgeNgram")
private String name;

public void setName(String name) {
    this.name = name;
}

public String getName() {
    return this.name;
}
}

и моему запросу

  QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Shop.class)
            .overridesForField("name", "search_query_analyzer").get();

    Query lucenQuery = qb.simpleQueryString().onField("name").withAndAsDefaultOperator().matching(shopSearchTerm).createQuery();

Но я не уверен, реализую ли я это при правильном подходе .. [114 ]

6
задан itowlson 18 April 2009 в 02:51
поделиться

4 ответа

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

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

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

2
ответ дан 17 December 2019 в 07:09
поделиться

Я согласен с Джоном в том, что 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. Это показывает хорошую реализацию довольно общего помощника для drag'n'drop из / в WPF ItemsControls, мне действительно нравится этот "Insertion Adorner". И мне действительно нравится, что код drag'n'drop красиво отделен от самого пользовательского элемента управления с помощью прикрепленных свойств, что делает его намного проще в использовании и обслуживании.

2
ответ дан 17 December 2019 в 07:09
поделиться

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

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

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

0
ответ дан 17 December 2019 в 07:09
поделиться

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

Определить перетаскивание как комбинацию MouseMove и MouseLeftButtonDown

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

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

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

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

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

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

0
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: