Cannot convert string to type 'Double'

vb.net, winforms

Solution

The direct fix for your existing code is this:

stsPuzzles.Text = "Puzzle: " + CStr(regionPuzzles) + "/" + CStr(maxPuzzles)

or this:

stsPuzzles.Text = "Puzzle: " & regionPuzzles & "/" & maxPuzzles

In VB.Net, `&`, rather than `+`, is the concatenation operator. `+` will often still work, but it also has a tendency to think you wanted arithmetic when an operand is numeric.

But what I would really do in this case, is this:

stsPuzzles.Text = String.Format("Puzzle: {0}/{1}", regionPuzzles, maxPuzzles)

or with Visual Studio 2015 or later:

stsPuzzles.Text = $"Puzzle: {regionPuzzles}/{maxPuzzles}"

Problem

I'm starting to code in, and learn, VB.NET. And so far, it's been smooth sailing. Until I try to run the program. What I've done is, in a language I know and understand, wrote a hangman game. And in C#, the code works perfectly. Once I got it to this finished point where I can say that there is nothing else I wish to change about it, I started hand-converting it to VB.NET. So far, no problem. But I just finished converting it, and now I have hit my snag. On the bottom of the window is a status bar, telling you which puzzle set you're in and which puzzle you're on. When selecting a puzzle, this line of code throws an error: ``` stsPuzzles.Text = "Puzzle: " + regionPuzzles + "/" + maxPuzzles ``` The error is: ``` Conversion from string "Puzzle" to type 'Double' is not valid. ``` Of course, the easy answer would be to take this mechanic out, but at least for testing purposes, I'd like it in there so I can make sure the right puzzles are in the right sets. Is there a way I can fix this so my two integer variables can be in the string? Or is there a work around that I can at least use long enough for testing purposes for the rest of the testing process? I'm hoping to find a way to fix this, as there are other places, such as displaying stats, that need to be able to do this.

Original source