Как я могу запретить пользователям вводить данные в DataGridViewComboBoxCells? - PullRequest
3 голосов
/ 20 декабря 2010

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

Dim MyCell as DataGridViewCell

Позже я укажу, являются ли они DataGridViewTextBoxControls или DataGridViewComboBoxCells, вот так:

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

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

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

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

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

1 Ответ

3 голосов
/ 20 декабря 2010

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

EDIT

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

По сути, поле со списком, которое вы видите в комбинированной ячейке, фактически является элементом управления со списком (Tired = Bad Engrish).

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

Как:

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
...