... или c # listviews действительно такой кошмар для управления?
Хорошо, проблема, над которой я работаю, очень проста. Или, по крайней мере, это так:
У меня есть текстовый файл, который содержит информацию о заказах клиентов в отдельных строках. Элементы данных разделены точками с запятой.
Моя форма выполняет итерации по этим заказам, помещает информацию об элементе в хеш-таблицы и помещает каждую хеш-таблицу в главную хеш-таблицу. Некоторая сводная информация о каждом заказе (продукт / заказ № / имя клиента / клиент №) отображается в моем списке просмотра, разделенном сортируемыми столбцами. Ниже списка представлен элемент управления вкладками с текстовыми полями для редактируемых частей деталей заказа, распределенных по трем вкладкам.
Вот что я хотел бы случиться:
- Пользователь нажимает на одну запись: текстовые поля управления вкладками заполняются деталями заказа.
- Пользователь редактирует детали в элементе управления вкладкой.
- Пользователь нажимает на другой заказ: подтверждающее сообщение проверяет, что изменение должно быть зафиксировано, если «Да», то детали должны быть сохранены обратно в соответствующую Hashtable и отображение в списке обновлений.
- Пользователь выбирает несколько элементов списка: верхний элемент должен редактироваться в элементе управления вкладкой.
- Пользователь нажимает кнопку «Удалить элементы» на панели инструментов в верхней части формы: элементы удаляются из хеш-таблицы, а элемент управления списком обновляется, чтобы отразить удаление. Все текстовые поля возвращаются пустыми в элементе управления вкладками.
Мне кажется, это довольно обычное и разумное поведение. Я предположил, что использование события SelectedIndexChanged предоставит возможности для работы с данными. Но событие запускается дважды при каждом выборе / отмене выбора, и не всегда ясно, какие элементы должны обновляться в представлении списка в какой момент.
Код для проверки того, какой тип «выбора / отмены выбора» только что произошел, и определения того, какие действия следует предпринять, начинает становиться довольно длинным, и мне просто интересно, не усложняю ли я все. *
Итак:
- Есть ли другое событие, которое я мог бы использовать для достижения своих функциональных целей? Или
- Есть ли что-то в событии SelectedIndexChanged, которое я не знаю, которое помогло бы программе решить, что она должна делать в данный момент? Или
- Я просто поступаю неправильно?
Любые предложения, даже предложения по изменению формы, будут приветствоваться.
РЕДАКТИРОВАТЬ: пытаясь атаковать эту проблему под другим углом, я меняю свою главную хэш-таблицу на сортированный список. Остальная часть проблемы остается той же.