也不是不可以實現,只不過復雜壹點而已,具體看下面代碼。不過在需要換行等情況下的文本顯示,還是建議用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