我在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# AOP的简单实现 2022-12-26
- 自动发布.NET Core Web应用 2023-09-28
- c# – Oracle Date列存储时间,但不显示它 2023-11-26
- 一篇文章弄懂C#中的async和await 2023-04-22
- C# WebService创建、发布、调用的实例讲解 2022-11-27
- c# WPF中的TreeView使用详解 2023-04-09
- 浅谈C# 字段和属性 2023-03-03
- C#多线程开发实战记录之线程基础 2023-04-28
- C#实现密码验证与输错密码账户锁定 2023-05-31
- C#程序在Linux环境下读取文件顺序乱序问题 2023-11-24