This is a great question.
System::Convert::ToString() is a .Net function, see the documentation here: (https://msdn.microsoft.com/en-us/library/system.convert.tostring(v=vs.110).aspx).
This entire library was built more with C# in mind than C++, and as a result it doesn't have complete support for some C++ constructs... like strings represented by char*. You are trying to access an overload for System::Convert::ToString(char* input)... but that overload doesn't exist, so you are being forced into the nearest matching neighbor.
In c++, you can do things like this:
char* pointer = NULL;
This is the same concept as what's happening to you right now - you are passing in a char* (actually a char, but that's really just a char* on the stack, with its length bound at compile time), but char* isn't a valid data type for an if statement - you need a bool. The result is that the compiler automatically interprets the above code, assuming you meant this instead:
if (pointer != NULL)
Because System::Convert::ToString(char* input) isn't a valid overload for this function, the compiler is automatically interpreting the result to match System::Convert::ToString(bool input) instead... giving you generated code that actually looks like this:
System::Convert::ToString(wordone != NULL)
Obviously, wordone != NULL will always return true in your program... so the result of mapping true to a string yields "True". Now you can see where your output is coming from
As for how to fix it... I don't know what the data type of tbPrac->Text is, but seeing as you're using std::ifstream, I'll assume it's compatible with std::string. Maybe try something like this instead:
tbPrac->Text = string(wordone) + string(" ") + string(wordtwo) + string(" ") + string(wordthree);
As a footnote, this would probably all be cleaner (and more robust) if you dropped the char* (char) objects entirely and used std::string from the beginning:
// use std::string instead of char
string wordone, wordtwo, wordthree;
// all of the file reading code stays the same, but now you read from the std::ifstreams directly into std::string objects instead. this way you don't have to worry about buffer overflow if the word happened to be greater than 49 characters.
// because you're already using std::string objects, you don't need to manually convert your char arrays to std::strings during the concatenation.
tbPrac->Text = wordone + " " + wordtwo + " " + wordthree;