我在Windows窗体应用程序中响应KeyDown事件处理程序.在此事件处理程序中,我想将KeyEventArgs KeyCode转换为字符串.当我们处理字母,数字或数字键盘上的字符时,这没问题.尝试转换以下字符时会遇到困难: ,. ; ‘//?...

我在Windows窗体应用程序中响应KeyDown事件处理程序.在此事件处理程序中,我想将KeyEventArgs KeyCode转换为字符串.当我们处理字母,数字或数字键盘上的字符时,这没问题.尝试转换以下字符时会遇到困难:< > ,. ; ‘//?
我当前的转换方法是:
private string ConvertKeyCodeToString(System.Windows.Forms.Keys keyCode, bool shiftPressed)
{
string key = new System.Windows.Forms.KeysConverter().ConvertToString(keyCode);
if (key.Contains("NumPad"))
{
key = key.Replace("NumPad", "");
}
if (key.Equals("Space"))
{
key = " ";
}
if (!shiftPressed)
{
key = key.ToLower();
}
return key;
}
现在,我正在调用ConvertToString而不是ConvertToInvariantString,因为这样做似乎没有任何改变.我注意到,引起问题的每个特殊字符似乎都以“ oem”开头.
对我而言,最好的解决方案似乎是使用某种列表将密钥转换为字符串.如果按下的键当然是特殊字符.恐怕这会引起与键盘文化有关的问题.
所以我的问题是:如何根据当前的文化将特殊字符的按键转换为字符串表示形式?
解决方法:
听起来您可能想使用KeyPress而不是KeyDown:
private void keypressed(Object o, KeyPressEventArgs e)
{
char key = e.KeyChar; // the character representation of the key that was pressed
}
对于非字符键(例如方向键和功能键),将引发KeyDown.
本文标题为:c#-将Windows窗体键转换为字符串


基础教程推荐
- C#简单实现发送socket字符串 2022-12-31
- 基于WPF制作一个可编程画板 2023-07-19
- CentOS 安装Asp.net Core & FTP服务 2023-09-26
- C#实现QQ邮箱发送邮件 2023-01-11
- c#中String类型的存储原理详解 2023-05-26
- C#中static void Main(string[] args) 参数示例详解 2022-11-04
- C# TreeView控件使用技巧汇总 2023-06-28
- C#实现基于ffmpeg加虹软的人脸识别的示例 2022-11-18
- C#中使用jieba.NET、WordCloudSharp制作词云图的步骤 2023-04-26
- 深入分析C# 线程同步 2023-02-25