代码之家  ›  专栏  ›  技术社区  ›  KevB

调整文本框上的“自动完成”下拉列表宽度

  •  5
  • KevB  · 技术社区  · 16 年前

    我正在使用.NET 2 winforms应用程序中的文本框,该应用程序是使用自定义自动完成源设置的。通过代码我是否可以增加包含自动完成建议的列表的宽度?

    理想情况下,我希望这样做,而不增加文本框的宽度,因为我是在用户界面空间的简称。

    3 回复  |  直到 16 年前
        1
  •  1
  •   Nikki9696    16 年前

    我不知道,但是你可以自动调整文本框的大小,使它只在需要时才宽,而不是总是和最长的文本一样宽。

    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
    

    结束类

        2
  •  0
  •   dguaraglia    16 年前

    嗯,真的没有直接的办法。要做到这一点,您可能需要对文本框进行子类化(在Windows API的意义上),即使这样,也会有很多猜测要做。

        3
  •  0
  •   Michael Damatov    16 年前

    据我所知,TextBox类包装了Windows附带的完整的自动完成API。唉,这个事实并不能“移植”到.NET框架的其他部分。