调整文本框自动完成下拉菜单的宽度

5
我正在使用一个在.NET 2 winforms应用程序中设置了自定义AutoCompleteSource的文本框。是否有一种通过代码增加包含自动完成建议的列表宽度的方法?理想情况下,我希望在不增加文本框宽度的情况下实现这一点,因为UI空间紧张。

可以根据需要修改文本框的下拉宽度。详情请参考:https://dev59.com/BlPTa4cB1Zd3GeqPmcqB - Loathing
3个回答

1

我不知道有没有这样的功能,但是你可以自动调整文本框的大小,使其只在需要时才变宽,而不总是与最长的文本一样宽。

示例来自http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3311429&SiteID=1

Public Class Form1
Private WithEvents T As TextBox
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    T = New TextBox
    T.SetBounds(20, 20, 100, 30)
    T.Font = New Font("Arial", 12, FontStyle.Regular)
    T.Multiline = True
    T.Text = "Type Here"
    T.SelectAll()
    Controls.Add(T)
End Sub
Private Sub T_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles T.TextChanged
    Dim Width As Integer = TextRenderer.MeasureText(T.Text, T.Font).Width + 10
    Dim Height As Integer = TextRenderer.MeasureText(T.Text, T.Font).Height + 10
    T.Width = Width
    T.Height = Height
End Sub

结束类


0
嗯,实际上没有直接的方法。你可能需要采用子类化(在Windows API意义上)TextBox来做到这一点,即使这样,仍然需要进行很多猜测。

0
据我所知,TextBox类封装了Windows自带的完整AutoComplete API。然而,这个事实在.NET框架的其他部分中并不“可移植”。

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