Hey everyone, I've got a question. I have a form that has a RichTextBox on it. In that RTB, I populate it with a query. However, what I am wanting to do is make equal spacing between each field returned, so that everything lines up. I'm not real sure how to fix it.
I tried equaling out the spacing by using this code here:
However, that doesn't work, so I'm not real sure what to do at this point. Anyone got any suggestions?
Here's the complete code from my form just in case:
I tried equaling out the spacing by using this code here:
VB.NET:
For Each rowCurrent In table1.Rows
intCode = rowCurrent("Code")
strCode = intCode.ToString
intLength = strCode.Length
useLength = 10 - intLength
strCode.PadRight(10, " ")
For counter = 1 To useLength
strCode = strCode + " " 'trying to align
Next
intTemp = strCode.Length
strCode = rowCurrent("Code")
strDescription = rowCurrent("Description")
rtbCharge.AppendText(" " + strCode + " " + strDescription)
rtbCharge.AppendText(Chr(13))
Next
Here's the complete code from my form just in case:
VB.NET:
Imports System.Drawing.Printing
Imports System.Windows.Forms.Form
Public Class frmChargeListing
Dim con As New OleDb.OleDbConnection
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
Dim table1 As DataTable
Dim counter As Integer
Dim intCode As Integer
Dim strDescription As String
Dim rowCurrent As DataRow
Dim strCode As String
Dim intLength As Integer
Dim useLength As Integer
Dim intTemp As Integer
Private Sub frmChargeListing_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = c:\ProFees\profees.mdb"
con.Open()
sql = "Select * from tblCharges"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "Charges")
table1 = ds.Tables("Charges")
rtbCharge.AppendText(" Charge Listing" + (Chr(13))) ' Title
For Each rowCurrent In table1.Rows
intCode = rowCurrent("Code")
strCode = intCode.ToString
intLength = strCode.Length
useLength = 10 - intLength
strCode.PadRight(10, " ")
For counter = 1 To useLength
strCode = strCode + " " 'trying to align
Next
intTemp = strCode.Length
strCode = rowCurrent("Code")
strDescription = rowCurrent("Description")
rtbCharge.AppendText(" " + strCode + " " + strDescription)
rtbCharge.AppendText(Chr(13))
Next
End Sub
Private Sub PrintToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintToolStripMenuItem.Click
If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
' showDialog method makes the dialog box visible at run time
PrintDocument1.Print()
End If
End Sub
Private Sub PrintPreviewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewToolStripMenuItem.Click
Try
PrintPreviewDialog1.ShowDialog()
Catch es As Exception
MessageBox.Show(es.Message)
End Try
End Sub
Private Sub PageSetupToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PageSetupToolStripMenuItem.Click
With PageSetupDialog1
.PageSettings = PrintDocument1.DefaultPageSettings
End With
Try
If PageSetupDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
PrintDocument1.DefaultPageSettings = PageSetupDialog1.PageSettings
End If
Catch es As Exception
MessageBox.Show(es.Message)
End Try
End Sub
Private Sub PPControlToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PPControlToolStripMenuItem.Click
Try
PrintPreviewControl1.Document = PrintDocument1
Catch es As Exception
MessageBox.Show(es.Message)
End Try
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
' PrintPage is the foundational printing event. This event gets fired for every
' page that will be printed
Static intCurrentChar As Int32
' declaring a static variable to hold the position of the last printed char
Dim font As New Font("Verdana", 14)
' initiating the font to be used for printing
Dim PrintAreaHeight, PrintAreaWidth, marginLeft, marginTop As Int32
With PrintDocument1.DefaultPageSettings
' initializing local variables that contain the bounds of the printing area rectangle
PrintAreaHeight = .PaperSize.Height - .Margins.Top - .Margins.Bottom
PrintAreaWidth = .PaperSize.Width - .Margins.Left - .Margins.Right
' initializing local variables to hold margin values that will serve
' as the X and Y coordinates for the upper left corner of the printing
' area rectangle.
marginLeft = .Margins.Left
marginTop = .Margins.Top
' X and Y coordinate
End With
If PrintDocument1.DefaultPageSettings.Landscape Then
Dim intTemp As Int32
intTemp = PrintAreaHeight
PrintAreaHeight = PrintAreaWidth
PrintAreaWidth = intTemp
' if the user selects landscape mode, swap the printing area height and width
End If
Dim intLineCount As Int32 = CInt(PrintAreaHeight / font.Height)
' calculating the total number of lines in the document based on the height of
' the printing area and the height of the font
Dim rectPrintingArea As New RectangleF(marginLeft, marginTop, PrintAreaWidth, PrintAreaHeight)
' initializing the rectangle structure that defines the printing area
Dim fmt As New StringFormat(StringFormatFlags.LineLimit)
' instantiating the StringFormat class, which encapsulates text layout information
Dim intLinesFilled, intCharsFitted As Int32
'*******************************************************************************
e.Graphics.MeasureString(Mid(rtbCharge.Text, intCurrentChar + 1), font, _
New SizeF(PrintAreaWidth, PrintAreaHeight), fmt, intCharsFitted, intLinesFilled)
'*******************************************************************************
' calling MeasureString to determine the number of characters that will fit in
' the printing area rectangle
'*******************************************************************************
e.Graphics.DrawString(Mid(rtbCharge.Text, intCurrentChar + 1), font, _
Brushes.Black, rectPrintingArea, fmt)
'*******************************************************************************
' print the text to the page
intCurrentChar += intCharsFitted
' advancing the current char to the last char printed on this page
'*******************************************************************************
If intCurrentChar < rtbCharge.Text.Length Then
'*******************************************************************************
e.HasMorePages = True
Else
'HasMorePages tells the printing module whether another PrintPage event should be fired
e.HasMorePages = False
intCurrentChar = 0
End If
End Sub
Private Sub FillByToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Try
Me.TblChargesTableAdapter.FillBy(Me.ProfeesDataSet.tblCharges)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
End Class