c# - 在 Windows 窗体中只能显示为大写字母的 TextBox 中仅允许 Windows 文件系统中的有效字符?

标签 c# .net winforms

在 Windows 文件系统中,在 Windows 窗体中只能显示为大写字母的 TextBox 中如何只允许有效字符?

有没有简单的方法?

  1. 关于 Windows 文件系统允许的字符集(Char.IsLetterOrDigit 不够)

  2. 如何将输入的字符变为大写?

最佳答案

创建一个文本框按键处理程序并使用 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;
        }
    }

[当然,创建一个方法比将这段代码直接放在处理程序中会更可重用。]

已更新以反射(reflect)评论。

关于c# - 在 Windows 窗体中只能显示为大写字母的 TextBox 中仅允许 Windows 文件系统中的有效字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2196880/

相关文章:

winforms - 为什么 Inspect.exe 在调试中运行时不显示 AutomationId 和其他 UIAutomation 属性?

vb.net - 始终在复选框控件中的文本旁边进行检查

c# - 如何防止用 Moq 调用基类构造函数?

c# - 在 SignalR Hub 的 OnConnected/OnDisconnected 中注入(inject)租户信息

c# - 在多线程环境中从 C# 调用 Delphi DLL 时发生访问冲突

.net - 快速释放本地对象

c# - 在 Metro 风格应用程序中使用遗留程序集

c# - Compact Framework - 将依赖项 (dll) 放在子文件夹中

.net - 如何使带有滚动条的WPF TextBox在添加行时自动滚动到底部?

c# - 如何将 null 或空字符串插入 datetime var?