2009-09-23 2 views
2

В Winforms, что является правильным способом, чтобы пользователь не изменял значение DropDown? Я хочу, чтобы пользователь сказал, что есть несохраненные изменения. Если пользователь решит не отбрасывать эти изменения, я хочу отменить изменение со списком. Есть идеи, как это сделать?WinForms - предотвращение изменения ComboBox - режим DropDownList

Я, хотя раньше видел вариант e.Cancel. Но, возможно, не в System.Windows.Forms.ComboBox.

UPDATE: Чтобы дополнительно объяснить, что ComboBox не является частью формы ввода данных. Он используется как навигатор/фильтр. Пользователь внес изменения в сетку. Я хочу, чтобы они не могли перейти от сетки, не получив подсказки.

+0

e.Cancel выглядит как событие. Подпишитесь на событие, например TextChanged, и выполните e.Cancel = true в обработчике событий. –

ответ

2

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

Предположительно, у вас есть метод в вашей форме, который загружает элементы управления из значений в какой-либо структуре данных (возможно, объект ORM или DataRow). Самый простой способ сбросить форму до ее первоначальных (предварительно отредактированных) значений - это просто повторить этот метод с исходной (неизменной) структурой данных.

Update: хорошо, простой способ сделать это, чтобы установить Enabled свойство ComboBox к false как только они меняют что-либо на форме, а затем установить его в true снова, как только они сохранить или отменить их изменения.

+0

См. Обновление к вопросу. – BuddyJoe

+0

+1 может работать. – BuddyJoe

1

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

1

Возможно, вы захотите использовать событие Validating combo box, которое является CancelEventHandler.

MSDN: Control.Validating event

+0

См. Обновление. Выполняется ли событие проверки только при попытке оставить элемент управления? – BuddyJoe

+0

Да - он срабатывает, когда управление теряет фокус. –