C # - Перемещение элементов списка в новые списки - PullRequest
2 голосов
/ 12 июля 2011

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

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

Так что, если пользователи захотят переместить элемент (ы) из левого списка вправый список он / она выберет пункт (ы) в крайнем левом списке и нажмет кнопку «переместить вправо».Теперь элемент будет удален из левого списка и добавлен в средний список.Теперь пользователь должен выбрать его из среднего списка и снова нажать кнопку «Переместить вправо», чтобы удалить его из среднего списка и добавить в правый список.

Если есть какой-либо способ переместить элемент всепути из левого списка дважды щелкните по кнопке «Переместить вправо», что было бы еще лучше.


Кто-нибудь знает, как сделать это в несколько простом вопросе?

Ответы [ 3 ]

1 голос
/ 12 июля 2011

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

//from left list
buttonToMiddle()
{
  listMiddle.add(selected text);
  listLeft.remove(selected text);
}

//from middleList
buttonToRight()
{
  listRight.add(selected text);
  listMiddle.remove(selected text);
}

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

Это просто глобальная идея и простой способ сделать это.

1 голос
/ 12 июля 2011

Еще один вариант сомнительного использования - активировать таймер при первом нажатии.Если он истекает без регистрации второго щелчка, скажем, 0,5 секунды, то он перемещает элемент на один столбец.Если в это время обнаружен второй щелчок, подождите, пока не истечет время таймера, и переместите его на два столбца.Если у вас есть событие двойного щелчка, я бы использовал его.В противном случае этот метод может быть полезен.

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

0 голосов
/ 12 июля 2011

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

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

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

Изменить, чтобы добавить

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

...