繁体   English   中英

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

[英]Unable to WRAP text in an Autocomplete Textbox column of DataGridView

我在 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 控件中有一个错误。 我们可以做一种作弊方法来解决这个问题。

  1. 在 Datagridview_CellBegainEdit 中,设置 rowsDefaultcellstyle wrapmode = false
  2. 在 DatagridView_CellEndEdit 中,设置 rowsDefaultcellstyle wrapmode = true

例子:

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

它为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM