The most obvious cause is that you are extracting the wrong sub-string, or the user has made an entry error.
Try using int.TryParse instead:
int ch1;
if (!int.TryParse(ch, out ch1))
{
MessageBox.Show(string.Format("Unable to convert \"{0}\" to a number: please check your input and try again.\n\"{1}\"", ch, txtuname.Text));
}