我在Windows窗体应用程序中响应KeyDown事件处理程序.在此事件处理程序中,我想将KeyEventArgs KeyCode转换为字符串.当我们处理字母,数字或数字键盘上的字符时,这没问题.尝试转换以下字符时会遇到困难: ,. ; ‘//?...
![](https://oss.womengda.net/imgfile/2310/1ER2JG03S0-242F.jpg)
我在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窗体键转换为字符串
![](/xwassets/images/pre.png)
![](/xwassets/images/next.png)
- c#-Flashlight应用程序每次在Windows Phone中崩溃 2023-11-16
- C#服务端图片打包下载实现代码解析 2023-03-04
- WINFORM 窗体间的传值实现解析 2023-02-02
- C# WebApi+Webrtc局域网音视频通话实例 2023-04-27
- Unity制作图片字体的方法 2023-03-28
- C# winform自定义翻页控件详解 2022-11-11
- Unity实现场景漫游相机 2023-03-14
- c# WinForm 窗体之间传值的几种方式(小结) 2022-12-31
- c# 使用计时器和观察者模式实现报警推送需求 2023-03-04
- c#/ .net项目如何保存/组织数据库查询 2023-11-14