什么是ChrW(e.KeyCode)的C#等价物?

时间:2011-05-19 14:52:54

标签: c# vb.net char keycode vb.net-to-c#

在VB.NET 2008中,我使用了以下语句:

MyKeyChr = ChrW(e.KeyCode)

现在我想将上述语句转换为C#。

任何想法?

4 个答案:

答案 0 :(得分:20)

C#中ChrW的快速等价只是将值转换为char

char MyKeyChr = (char)e.KeyCode;

更长,更具表现力的版本是使用其中一个转换类,例如System.Text.ASCIIEncoding

或者您甚至可以通过导入Microsoft.VisualBasic命名空间在C#中使用实际的VB.NET函数。只有当你依赖于ChrW方法下的一些特殊检查时,才真正有必要这样做,你可能不应该依赖它们。该代码看起来像这样:

char MyKeyChr = Microsoft.VisualBasic.Strings.ChrW(e.KeyCode);

然而,在这种情况下,并不保证能够完全生成您想要的内容(原始代码也不是)。并非Keys枚举中的所有值都是ASCII值,因此并非所有值都可以直接转换为字符。特别是,铸造Keys.NumPad1等。人。到char不会产生正确的值。

答案 1 :(得分:7)

看起来C#等价物将是

var MyKeyChr = char.ConvertFromUtf32((int) e.KeyCode)

但是,e.KeyCode不包含Unicode代码点,因此这种转换毫无意义。

答案 2 :(得分:3)

翻译代码的最直接的方法是使用C#

中的VB.Net运行时函数
MyKeyChr = Microsoft.VisualBasic.Strings.ChrW(e.KeyCode);

如果你想避免依赖VB.Net运行时虽然你可以使用这个修剪版本

MyKeyChr = Convert.ToChar((int) (e.KeyCode & 0xffff));

答案 3 :(得分:1)

ChrW(&H[YourCharCode]) 的 C# 等价物是 Strings.ChrW(0x[YourCharCode])

您可以使用 https://converter.telerik.com/ 在 VB 和 C# 之间进行转换。