如何防止用户在DataGridViewComboBoxCells中输入数据?

3

我有一个项目使用了许多DataGridView控件。大部分的单元格都是DataGridViewTextBoxCell类型的。我声明我的控件如下:

Dim MyCell as DataGridViewCell

稍后我会明确它们是DataGridViewTextBoxControls还是DataGridViewComboBoxCells,就像这样:
MyCell = New DataGridViewTextBoxCell   ...or...
MyCell = New DataGridViewComboBoxCell

我的代码中没有任何地方需要用户在组合框中输入自己的值。也就是说,它们要么是硬编码的,要么是从应用程序中收集的数据。

目前,用户可以突出显示上面定义的组合框控件并开始输入任何他们喜欢的内容。例如,我有一个组合框,为用户提供了1到9之间整数的选择。如果我想,我可以突出显示组合框单元格并输入“Hello, World!”。

如何禁用此功能?我相信有一个属性,但我尚未找到它。我已经搜索了互联网,并且只发现了将用户输入的值添加到列表以及一系列数据绑定教程的能力。

提前致谢! C

1个回答

3

点击这里查看。

编辑

我可能应该放更多的信息,但我感到有点疲倦和不舒服,所以我想偷懒...但是你让我懒惰的心情被破坏了并迫使我再多打一些字。 (哈哈只是开玩笑)。

本质上,你在comboboxcell中看到的comboxbox实际上是一个combobox控件(疲劳=糟糕的英语)。

据我所记,您应该能够通过使用datagridview的EditingControlShowing事件来获取单元格中使用的控件。 一旦在那里,您只需设置dropdownstyle即可。

像:

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

如果这是一个普通的ComboBox控件,而不是DataGridViewComboBoxCell,那么这将正常工作。除非有一种神奇的DataGridViewComboBoxCells技巧可以使用此属性,但我还没有找到它。 - Superhuman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接