C # Gridview, переставить - PullRequest
       0

C # Gridview, переставить

1 голос
/ 05 апреля 2011

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

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

Итак, все варианты приветствуются ..

РЕДАКТИРОВАТЬ: Используя WinForms, это не должно быть gridview, просто я не мог думать ни о чем другом ..

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011

Я бы просто создал два DataGridView (или ListView, если хотите), первый список файлов в папке A, а второй список файлов в папке B.

Затем разрешите выделять только одну строку за раз в обеих сетках (MultiSelect = false, SelectionMode = FullRowSelect) и добавьте кнопку с именем «Объединить выбранное», которая просто объединит файл, выбранный в первой сетке, с файлом, выбранным в вторая сетка.

0 голосов
/ 08 апреля 2011

Полагаю, вы говорите о DataGridView , так как DataGrid устарела.

В конструкторе убедитесь, что для SelectionMode в DataGridView установлено значение CellSelect. Затем в свойствах -> события дважды щелкните событие SelectionChanged, чтобы создать новый метод для обработки этого события.

Добавьте этот код к методу:

private DataGridViewCell _lastCellSelected = null;
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
    if(dataGridView.SelectedCells.Count == 0)
    {
        _lastCellSelected = null;
        return;
    }

    DataGridViewCell selectedCell = dataGridView.SelectedCells[0];
    if(_lastCellSelected == null || selectedCell.ColumnIndex == _lastCellSelected.ColumnIndex)
    {
        //User clicked first cell
        _lastCellSelected = selectedCell;
    }
    else
    {
        //User has clicked two cells from different columns
        string filename1 = _lastCellSelected.Value;
        string filename2 = selectedCell.Value;

        //TODO: "Merge" files here

        _lastCellSelected = null;
    }
}
0 голосов
/ 08 апреля 2011
  1. Используйте 2 списка, связанные с каждой папкой, чтобы пользователь мог прокручивать вверх / вниз, чтобы выбрать нужный файл
  2. Имеется кнопка «Объединить файлы», которая активируется при выборе элемента из обоих списков.
  3. Когда пользователь нажимает «Объединить файлы», появляется окно подтверждения, чтобы убедиться, что оно не нажало мою ошибку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...