vb.net中listbox内容自动换行如何实现
4个回答
展开全部
也不是不可以实现,只不过复杂一点而已,具体看下面代码。不过在需要换行等情况下的文本显示,还是建议用RichTextBox开启只读属性比较省心、比较合适。
Private Sub AutoNextRow()
'获取ListBox行集合文本
Dim length As Integer = (ListBox1.Items.Count - 1)
Dim items(length) As String '行文本数组
For i As Integer = 0 To length
items(i) = ListBox1.Items(i).ToString
Next
'处理ListBox换行
ListBox1.Items.Clear() '清空行内容
Using g As Graphics = Graphics.FromHwnd(ListBox1.Handle)
Dim result As New List(Of Object)
Dim w As Single = ListBox1.ClientSize.Width
Dim sf As SizeF, str As StringBuilder
For Each s As String In items
str = New StringBuilder
For i As Integer = 0 To (s.Length - 1)
sf = g.MeasureString(str.ToString & s(i), ListBox1.Font)
If sf.Width > w Then
result.Add(str.ToString)
str = New StringBuilder
End If
str.Append(s(i))
If i = s.Length - 1 Then result.Add(str.ToString)
Next
Next
ListBox1.Items.AddRange(result.ToArray) '填充行内容
End Using
End Sub
展开全部
、首先选中拖至面板的ListBox控件,点属性,选中DrawMode,改成OwnerDrawFixed或OwnerDrawVariable
2、还是在属性工具中,切换到事件(就是那个闪电图标),鼠标双击‘行为’菜单下的DrawItem,添加一个事件。
3、在‘窗体设计器生成的代码’中就添加了一个新的事件
this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
4、在事件中添加代码,你自己通过文字的长度和文字的高度,计算每一列的宽度,进行设置。
2、还是在属性工具中,切换到事件(就是那个闪电图标),鼠标双击‘行为’菜单下的DrawItem,添加一个事件。
3、在‘窗体设计器生成的代码’中就添加了一个新的事件
this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
4、在事件中添加代码,你自己通过文字的长度和文字的高度,计算每一列的宽度,进行设置。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
陈恩点在此为你解答如有错误请见谅
不能实现
不能实现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
l
ist(1)
ist(1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询