Разрешить только допустимые символы в файловой системе Windows в TextBox, которые могут отображаться только в верхнем регистре в Windows Forms? - PullRequest
1 голос
/ 04 февраля 2010

Как разрешить только допустимые символы в файловой системе Windows в TextBox, которая может отображаться только в верхнем регистре в Windows Forms?

Есть ли простой способ для этого?

  1. О наборе символов, разрешенных в файловой системе Windows (Char.IsLetterOrDigit недостаточно)

  2. Как сделать прописные буквы прописными?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2010

Создайте обработчик нажатия клавиши Textbox и используйте Path.GetInvalidPathChars(), Path.GetInvalidFileNameChars(), чтобы проверить действительный символ и вернуть версию в верхнем регистре, если символ действителен.

   textBox1.CharacterCasing = CharacterCasing.Upper; 

   ...

   private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (Path.GetInvalidFileNameChars().Contains(e.KeyChar) ||
            Path.GetInvalidPathChars().Contains(e.KeyChar))
        {
            e.Handled = true;
        }
    }

[Конечно, было бы более целесообразно создать метод, а не помещать этот код непосредственно в обработчик.]

ОБНОВЛЕНО для отражения комментариев.

1 голос
/ 19 мая 2011

Вот мое решение.Он отлично работает для соглашения имен файлов Windows.Ура.

 // Prevent user from wrong input - \/:*?"<>|
        private void textBoxMP3Name_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[^?:\\/:*?\""<>|]"))                                                                                        
            {                                                                           
                e.Handled = true;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...