调整文本框上的自动完成下拉宽度
时间:2020-03-06 15:01:26 来源:igfitidea点击:
我在使用自定义AutoCompleteSource设置的.NET 2 Winforms应用程序中使用文本框。无论如何,是否有代码可以增加包含自动完成建议的列表的宽度?
理想情况下,我希望在不增加文本框宽度的情况下执行此操作,因为我在UI中缺少空间。
解决方案
嗯,真的没有直接的方法。我们可能必须求助于TextBox的子类化(在Windows API的意义上)才能做到这一点,即使那样,仍然有很多猜测要做。
并不是我所知道的,但是我们可以自动调整文本框的大小,以使其仅在需要时才宽,而不是总是与最长的文本一样宽。
来自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
末级
据我所知,TextBox类包装了Windows随附的完整AutoComplete API。 las,此事实"不可移植"到.NET框架的其他部分。