Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法在DataGridView的自动完成文本框列中包装文本_Sql Server_Vb.net - Fatal编程技术网

Sql server 无法在DataGridView的自动完成文本框列中包装文本

Sql server 无法在DataGridView的自动完成文本框列中包装文本,sql-server,vb.net,Sql Server,Vb.net,我在DataGridView中创建了一个自动完成文本框列(工作正常) 现在,在文本大小变小之前没有问题,但是当文本变长时,它不会被包装在列中,文本会被修剪。 如果我将列的WRAP属性设置为TRUE,则文本框将停止自动完成。 所以,它就像自动完成或包装,但我需要两者 我把我的代码放在下面如果有什么可以做的话,看看- Private Sub DataGridView2_EditingControlShowing(ByVal sender As System.Object, ByVal e

我在DataGridView中创建了一个自动完成文本框列(工作正常)

现在,在文本大小变小之前没有问题,但是当文本变长时,它不会被包装在列中,文本会被修剪。

如果我将列的
WRAP
属性设置为
TRUE
,则文本框将停止自动完成。 所以,它就像自动完成或包装,但我需要两者

我把我的代码放在下面如果有什么可以做的话,看看-

    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 particulars 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(0))
    End While

    Return str

End Function
[已解决] 也许它在datagridview控件中有一个bug。 我们可以用一种作弊的方法来解决这个问题

  • 在Datagridview_CellBegainEdit中,将rowsDefaultcellstyle wrapmode设置为false
  • 在DatagridView_CellEndEdit中,将rowsDefaultcellstyle wrapmode设置为true
  • 例如:

    DGV.RowsDefaultCellStyle.WrapMode=DataGridViewTriState.False(CellBegainEdit) DGV.RowsDefaultCellStyle.WrapMode=DataGridViewTriState.True(CellEndEdit)


    它对我有用。

    使用数据适配器填充数据表。然后使用datagridview1.DataSource=dt。请参阅:它将如何产生影响?当您自动允许数据源填充DGV时,自动缩放将起作用,以便所有文本都适合单元格。我发现手动设置DGV存在太多问题,其中更新缩放不起作用。然后,唯一的解决方案是删除DGV并添加一个新DGV。