Как я могу запретить пользователям вводить данные в DataGridViewComboBoxCells?

У меня есть проект, в котором используется ряд элементов управления DataGridView. Большинство ячеек имеют убеждение DataGridViewTextBoxCell. Я объявляю свои элементы управления так:

Dim MyCell as DataGridViewCell

Позже я уточню, являются ли они DataGridViewTextBoxControls или DataGridViewComboBoxCells следующим образом:

MyCell = New DataGridViewTextBoxCell   ...or...
MyCell = New DataGridViewComboBoxCell

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

В настоящее время пользователи могут выделить элемент управления полем со списком, определенный, как показано выше, и начать вводить все, что им нравится. Например, у меня есть одно поле со списком, которое предлагает пользователю выбор целых чисел от 1 до 9. Я могу выделить ячейку поля со списком и ввести «Hello, World!» если бы я хотел.

Что нужно, чтобы отключить эту способность? Я уверен, что есть недвижимость, но я ее еще не нашел. Я поискал в Интернете и нашел только возможность добавлять значения, введенные пользователем, в список и поток руководств по привязке данных.

Заранее спасибо! C


person Superhuman    schedule 20.12.2010    source источник


Ответы (1)


Проверьте здесь

ИЗМЕНИТЬ

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

По сути, поле со списком, которое вы видите в ячейке со списком, на самом деле является элементом управления выпадающим списком (Усталый = Плохой английский).

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

Нравится:

Private Sub datagridview_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs)

    Dim c As ComboBox = e.Control

    If Not c Is Nothing Then

        c.DropDownStyle = ComboBoxStyle.DropDownList

    End If

End Sub
person Tony Abrams    schedule 20.12.2010
comment
Если бы это был простой элемент управления ComboBox, а не DataGridViewComboBoxCell, это сработало бы нормально. Если только нет волшебного трюка с DataGridViewComboBoxCells, который позволяет им использовать это свойство, а я его еще не нашел. - person Superhuman; 20.12.2010