我有一个 datagridview,其中一列为 TextBox。我编写了一个函数来填充数据库中的值并建议值以自动完成文本。我实现了它,然后我开始编码以使列自动递增 (Sr.No) ,所以我又编写了一些代码行并更改了一些属性,突然文本框停止了自动完成。现在我尝试了一切可能的步骤来使其发挥作用,但失败了。我不知道我改变的属性是什么影响了这个。 我把我的代码放在这里,请帮忙
这是 Editingcontrolshowing 事件的代码...
Private Sub DataGridView2_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView2.EditingControlShowing
DataGridView2.BeginEdit(True)
Dim autoText As TextBox = TryCast(e.Control, TextBox)
If autoText IsNot Nothing Then
autoText.AutoCompleteMode = AutoCompleteMode.SuggestAppend
autoText.AutoCompleteCustomSource = AutoCompleteLoad()
autoText.AutoCompleteSource = AutoCompleteSource.CustomSource
End If
End Sub
这是我加载值的自动完成功能...
Public Function AutoCompleteLoad() As AutoCompleteStringCollection
Dim str As AutoCompleteStringCollection = New AutoCompleteStringCollection()
Dim ConnectionString As SqlConnection = New SqlConnection("data source=ADMIN-PC\SQLEXPRESS; database=billdev;Trusted_Connection=yes;")
Dim strSQL As String = "SELECT * from bill;"
Dim SQLcommand As New SqlCommand(strSQL, ConnectionString)
ConnectionString.Open()
Dim reader As SqlDataReader
reader = SQLcommand.ExecuteReader()
While reader.Read()
str.Add(reader.Item(1))
End While
Return str
End Function
这是我在停止工作之前添加的额外代码,但我认为这没有任何区别
Private Sub DataGridView2_RowPrePaint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles DataGridView2.RowPrePaint
If e.RowIndex >= 0 Then
Me.DataGridView2.Rows(e.RowIndex).Cells(0).Value = e.RowIndex + 1
End If
End Sub
我找到了解决方案。 我尝试随机更改 datagridview 的每个属性。终于进入正题了。 它是列本身的
WRAP
属性。
哇,我遇到了自动完成功能不起作用的问题,是的,自动换行阻止了自动完成功能的工作。谢谢 Shreekant,抱歉你花了很长时间才发现,但这确实对我有帮助。
也为了只对一列执行此操作,在 EditingControlShowing 过程中,我使用了:
如果_DataGridView.Columns(the_DataGridView.CurrentCell.ColumnIndex).HeaderText = "标题文本"
使其仅适用于该列。很多网页和 YouTube 视频都会检查第 (1) 列,这纯粹是无稽之谈。
参考Shreekant的
我找到了解决方案。我尝试随机更改 datagridview 的每个属性。终于进入正题了。它是列本身的 WRAP 属性。
您还需要检查 DefaultCellstyle.wrapMode 它应该为 Not set 或 false。