bueno, te lo pongo en modo consola, en este caso leo el texto con un readline(), lo tuyo seria lo mismo pero con texbox1.text. Bueno mas o menos es un ejemplo para que te puedas hacer una idea, en este caso los caracteres que no cuenta son los de la ( 'a' a la 'z') de la ('A' a la 'Z') y del ( '0' al '9') es decir, letras con acentos, la 'ñ', etc los contaria como NO alfanumeicos. Pero weno, esto es cojerte el codigo ANSI o ASCII e ir metiendo ahi los que no quieras que te cuenten
Va el ejemplo y luego lo explico:
string texto = Console.ReadLine();
int numero = 0;
for (int i = 0; i < texto.Length;i++ )
{
char a=texto[i];
if ((a < 48) | (a >57 & a<65) | (a>90 & a<97) | (a>122))
{
numero++;
}
}
Console.WriteLine(numero);
Console.ReadLine();
bucle con tantas repeticiones como caracteres tenga la frase. ('a' es el caracter que comparamos) y la comparación la hacemos al nivel char como caracter ASII. Bueno, no se como explicar muy bien, la cuestión es ir metiendo en el 'if' todos los caracteres que no sean alganumericos, o si te resulta mas facil hacerlo al revés, meter los alfanumericos deseados y en ese caso no contar en el if sino en el else.
Bueno, se que no explique nada bien, espero que almenos veas la idea de hacerlo.
Si no lo entiendes avisa, alomejor en otro momento estoy un poco mas inspirado. Saludos