• 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.
  • Posts

    • Apple watchOS 26 to likely work on following list of devices by Hamid Ganji Apple's WWDC 2025 event is inching closer, where the iPhone maker is expected to reveal its latest software developments. This year's WWDC is focused on introducing a design overhaul to a wide range of Apple operating systems with a glass-like UI. The new UI overhaul takes most of its clues from visionOS, bringing a unified appearance to Apple devices. It has already been reported that Apple plans to change the name of its operating systems. So, we should expect to see watchOS 26 at the upcoming event, alongside iOS 26, iPadOS 26, and tvOS 26. The codename for Apple’s UI overhaul project is Solarium, which means a kind of glass that lights can go through. Here is the list of compatible Apple Watch models with watchOS 26: Apple Watch Series 6 Apple Watch Series 7 Apple Watch Series 8 Apple Watch Series 9 Apple Watch Series 10 Apple Watch SE (2nd generation) Apple Watch Ultra Apple Watch Ultra 2 Note that this is not Apple's official compatibility list, and the company might extend support to older Apple Watch models. However, given the previous records, the above models are more likely to get watchOS 26. Alongside these models, the Apple Watch Series 11, Apple Watch Ultra 3, and a new Apple Watch SE with plastic body will also receive watchOS 26 right off the bat. These models will drop in September next to the iPhone 17 series. While it was initially believed Apple would keep the upcoming UI overhaul to iPhones, iPads, and Mac devices, Bloomberg said the new UI also reaches watchOS and tvOS. However, the scope of changes on the watchOS are less likely to be significant. Yet little details exist about watchOS 26 and its features, but it's expected to support new watch faces and third-party shortcuts in the Control Center. Source: MacRumors
    • I probably use Messages two or three times a month. It’s Messenger and WhatsApp. I can’t be the only one?
    • I’m not sure interest free credit qualifies as a ‘discount’ 🤔
    • I am confused on how the demand for AMD CPUs is relevant to this discussion?
  • Recent Achievements

    • One Month Later
      EdwardFranciscoVilla earned a badge
      One Month Later
    • One Month Later
      MoyaM earned a badge
      One Month Later
    • One Month Later
      qology earned a badge
      One Month Later
    • One Year In
      Frinco90 earned a badge
      One Year In
    • Apprentice
      Frinco90 went up a rank
      Apprentice
  • Popular Contributors

    1. 1
      +primortal
      451
    2. 2
      +FloatingFatMan
      247
    3. 3
      snowy owl
      240
    4. 4
      ATLien_0
      196
    5. 5
      Xenon
      141
  • Tell a friend

    Love Neowin? Tell a friend!