• 0

VB.net - StringFormat


Question

I want to be able to print out the results of a program using the contents of the labels and text boxes. I have managed to do that using the DrawString command. Now I want to format the string that is printed so that it looks more organized. I cannot figure out how to use tabs with right alignment. Maybe I am searching for the wrong thing. Here's a sample of my code:

Dim mtg as String
Dim mortRR as String
Dim myStringFormat As New StringFormat

Dim tabStops As Single() = {150.0F, 100.0F, 100.0F}
myStringFormat.SetTabStops(0.0F, tabStops)

mtg = "Example:" & ControlChars.Tab & "$" & txtMtg.Text & ControlChars.Tab & _
          "Amount: " & ControlChars.Tab & lblMtg.Text

mortRR = "Example RR:" & ControlChars.Tab & "$" & txtMortRR.Text & ControlChars.Tab & _
               "Amount: " & ControlChars.Tab & lblMortRR.Text

lineHeight = m_printFont.GetHeight(e.Graphics)

ypos = e.MarginBounds.Top
xpos = e.MarginBounds.Left

e.Graphics.DrawString(mtg, m_printFont, m_printBrush, xpos, ypos, myStringFormat)
ypos = ypos + lineHeight

e.Graphics.DrawString(mortRR, m_printFont, m_printBrush, xpos, ypos, myStringFormat)
ypos = ypos + lineHeight

That sets it up with left tabs, but I want them to be right tabs so the columns line up on the right side. Maybe there is a better way to do the whole thing. Hopefully, that is enough explanation. Thanks a lot.

Link to comment
https://www.neowin.net/forum/topic/118633-vbnet-stringformat/
Share on other sites

5 answers to this question

Recommended Posts

  • 0

String.Format

You can specify right/left alignment, widths, number formats, etc.

' {index[,alignment][:formatString]}
' negative alignment values indicate left justification, positive, right justification

Console.WriteLine( String.Format( "{0, -20}{1,-25}",  str1, str2 )

  • 0

I can't just space it with individual spaces because the contents of the text boxes are not always going to be the same size.

Where does Console.WriteLine display the string? I am using e.Graphics.DrawString and I can either Print it or Preview it with the Print Preview Dialog. I am not sure where I should insert the Console.WriteLine part. Sorry I don't know the technical terms. Hope you can understand.

Thanks for the suggestions.

  • 0

Console.WriteLine writes to the console(dos prompt). Sorry, I wasn't really thinking well when I wrote that.

Do you have a maximum field length for you text boxes? How big are the numbers generally going to be?

Here's the usage for String.Format:

mtg = String.Format("Example: ${0, 25:#0.00}\t\tAmount: ${1, 25:#0.00}", txtMtg.Text, lblMtg.Text);

This code will format the string so that each field for the txtMtg.Text and lblMtg.Text is 25 characters wide with right justification. It's probably excessive space, but that is just an illustration of how you would use the Format method.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.