Изменить поведение ComboBox

Alexandr Alexandrovich
Дата: 26.01.2010 01:34:37
Доброго всем времени суток!

Подскажите, плиз, как сделать, чтобы при попытке открытия списка объекта типа ComboBox, вместо открытия списка, отображалась произвольная, выбранная мной, форма.

Моя задача вот в чём:
Простенькая система учёта рабочего времени. На форме отображается информация по одной выполняемой пользователем задаче. Для того, чтобы не вводить название клиента, номер договора и т.д. вручную, его нужно выбрать из ранее заполненного списка, который хранится в отдельной таблице.
Стандартный список ComboBox не годится, т.к. значений может быть очень много. Их лучше отображать в виде списка на форме, а выбранное пользователем значение возвращать обратно в форму задачи при помощи modalresult.

На вложенном скриншоте:
1 - ComboBox, который должен открывать форму, при попытке открыть список его значений
2 - Собственно, форма со списком возможных значений

Подскажите, плиз, куда вписаться?

Заранее спасибо!
Esofter
Дата: 26.01.2010 01:51:54
Александр Иванович, не страдайте фигней. Зачем зацикливатся на стандартных решениях типичных задач. Зачем там тогда нужен комбобокс если он не будет выезжать. Поставь какой-нить линклейбл для красоты, по клику которого будет открыватся нужное окно и возвращать то что надо.
vagner
Дата: 26.01.2010 09:04:29
Esofter,

+1.

PS Я в таких случаях сооружаю текст-бокс а рядом кнопочку с тремя точками.
gds
Дата: 26.01.2010 10:39:06
vagner

PS Я в таких случаях сооружаю текст-бокс а рядом кнопочку с тремя точками.

+1 ага тож так делаю быстро и со вкусом. А главное пользователи не ругаются. Видимо уже привыкшие.
А вот к такого роду новшеству как у топикастера лумаю будет много вопросов у пользователей ПО.
Alexandr Alexandrovich
Дата: 26.01.2010 12:41:46
Ну хорошо. Кнопочка с тремя точками и линклейбл для формы хорошо подходят.
Но я хотел использовать ComboBox вот ещё по какой причине.
Когда пользователь отчитывается об отработанном времени, то он может создавать задачи из формы, как показано на скриншоте в теме этого топика. Но эти же задачи он может открыть и в виде списка. Форма со списком имеет DataGridView, а название клиента содержится в DataGridViewComboBoxColumn.

На сколько я понимаю ComboBox и DataGridViewComboBoxColumn нужно примерно одинаково изменить, чтобы вместо "выезжания списка" открывалась форма со списком.

Esofter
Зачем там тогда нужен комбобокс если он не будет выезжать

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

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

Всем спасибо за советы, но вопрос пока что остаётся актуальным. Надеюсь, придумаю, как это сделать :)
дерево
Дата: 26.01.2010 14:20:45
Неправильный интерфейс. Потому что он противоречит стандартным ОЖИДАНИЯМ пользователей.

"Через карточку" - просто точно так же добавить в грид свойство AllowEdit и появится с боку такая же СТАНДАРТНАЯ кнопочка с тремя точками. Которая подразумевает под собой открытие формы редактирования. А вот чего будет на этой форме - уже другой вопрос. Но прикручивать к стандартному контролу - комбобоксу (точнее - его глифу) - нестандартное (сиречь не ожидаемое) поведение - это как раз ухудшение юзабилити. Т.е. как у Черномырдина - хотели как лучше - получилось как всегда. И будет бедный Йорик юзер топать до безумия по этому списку в надежде когда-нибудь его все-таки раскрыть. А ему всё форма выпадать будет.
дерево
Дата: 26.01.2010 14:27:36
С комбобоксом есть другой вариант. Добавляем в его список ложный элемент, который отображается, например, как "New..." Теперь после вполне себе стандартного выбора из списка этого элемента можно открыть форму для внесения новых записей. Чего, собственно, юзер и ожидает. Рядом с комбобоксом помещаем вышеупомянутую глубокоуважаемыми мемберами кнопку для редактирования с 3-мя точками. Тогда после стандартного выбора в комбобоксе юзер может её нажать и открыть форму для редактирования выбранного в комбобоксе значения. Но перенастраивать сам глиф раскрытия списка не стоит.
Alexandr Alexandrovich
Дата: 27.01.2010 15:35:15
To "дерево", Esofter, vagner, gds:
Большое спасибо за замечания! Думаю, я так и сделаю...

Ради своего оправдания, должен сказать, что это моя первая программа на WinForms, да и на .NET Framework вообще. А идею с карточными/списочными формами я взял из Microsoft Navision. Идея на самом деле очень классная, но для WinForms её, видимо, нужно адаптировать.

Ещё так много вопросов :((
Очень хотелось бы посмотреть как работает какая-нить ERP-подобная система, написанная на WinForms + ADO.NET или где-нибудь узнать, по каким правилам строить интерфейс?

Подскажите, существуют ли какие-то предопределённые паттерны или правила именно для WinForms, которые описывают, как реализовать "правильный интерфейс", который будет удовлетворять "стандартным ОЖИДАНИЯМ пользователей"?