也不是不可以實現,只不過復雜一點而已,具體看下面代碼。不過在需要換行等情況下的文本顯示,還是建議用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
如果要自動換行,設置label的寬度固定即可。如果手動換行,可以這樣:Label1.Caption = "這是標簽" vbCrlf "內容換行"
報表打印應該也能實現,但是我覺得你這個用文本打印更簡單,將數據輸出到txt文件,結果用RichTextBox顯示,但是需要簡單的排版,調用打印機打印RichTextBox即可的
排版用tab()、space()、vbcrlf或PrintLine(1)換行,代碼類似如下樣式
PrintLine(1, TAB(60), "準考證" )
PrintLine(1)
PrintLine(1, "姓名:" xingming Space(3) "準考證號:" cel(1) Space(3) cel(2) Space(3) cel(3))
但是TAB()排版比較規整
打印代碼類似如下:
PrintDialog1.Document = PrintDocument1
PrintDocument1.DocumentName = "準考證"
PrintDialog1.AllowSomePages = False
PrintDialog1.ShowHelp = False
PrintDialog1.ShowNetwork = False
PrintDialog1.AllowSelection = False
PrintDialog1.AllowPrintToFile = False
MySReader = New StringReader(RichTextBox1.Text)
stringToPrint = MySReader.ReadToEnd()
PageSetupDialog1.Document = PrintDocument1
PageSetupDialog1.PageSettings.Margins.Bottom = 50
PageSetupDialog1.PageSettings.Margins.Top = 50
PageSetupDialog1.PageSettings.Margins.Left = 50
PageSetupDialog1.PageSettings.Margins.Right = 50
If PageSetupDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
PrintDocument1.DefaultPageSettings = PageSetupDialog1.PageSettings '頁面設置
If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
If PrintDialog1.PrinterSettings.IsValid = True Then
PrintDocument1.Print()
MsgBox("打印完成!" vbCrLf "Print completed!", , "Print hint(打印提示)")
Else
MsgBox("打印失敗!打印機不可用。" vbCrLf "Print failed! The printer is not valid.", , "Print hint(打印提示)")
End If
Else
Exit Sub
End If
End If
錯了,是vbCrLf Chr(13) + Chr(10)
共兩個字符。
#10是換行符
#13是回車符
有了回車符,代表了一行的結束,也方便于讀取文本。
不要只打一個,vbCrLf簡單方便,也是一個良好的習慣。