テキスト ボックスからの入力をチェックするときは、それをループに渡して個々の文字をチェックします。
なぜこれが起こっているのか少しわかりませんが、「/」を入力すると、関数はそれを偽として読み取りますか?
// Checks the Password contains the correct input
for (i = 0; i < passwordLength; i++)
{
v = Convert.ToInt32(passwordArray[i]);
// (not 0-9 or not A-Z or not a-z)
// "/"(converted to 47) reads as (true)+(true)+(false) = false
if ((v < 48 || v > 57) && (v < 65 || v > 90) && (v < 97 || v > 122))
{
e = 2;
}
}