For any GUI app in Windows, the code you type with the numeric pad is interpreted according to the machine's default code page. In Western Europe and the Americas, and probably close to your home with a name like yours, it will be Windows-1252. But not in, say, Russia, Eastern Europe, Middle East, etc.
Use Encoding.Default.GetBytes() to avoid taking a dependency on the default code page. If the byte[] you get contains 0x3f ('?') or more than one element then it cannot be entered.
Do beware the trouble with console mode apps. They typically run with a legacy MS-Dos code page encoding, 437 in your neck of the woods but again something very different in another part of the world. The Alt-code now produces a very different character, determined by Console.OutputEncoding. How you untangle this is not obvious from the question, I suppose you'll need to know what specific process is going to consume the code. If it starts to feel like this project was a mistake then you're heading the right way.