Что такое C# эквивалент ChrW(e.KeyCode)?

В VB.NET 2008 я использовал следующее утверждение:

MyKeyChr = ChrW(e.KeyCode)

Теперь я хочу преобразовать приведенное выше утверждение в C#.

Есть идеи?

5 ответов

Решение

Похоже, эквивалент C# будет

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

Тем не мение, e.KeyCode не содержит кодовую точку Unicode, поэтому это преобразование не имеет смысла.

Быстрый и грязный эквивалент ChrW в C# просто приведение значения к char:

char MyKeyChr = (char)e.KeyCode;

Более длинная и выразительная версия - вместо этого использовать один из классов преобразования, например: System.Text.ASCIIEncoding,

Или вы могли бы даже использовать фактическую функцию VB.NET в C#, импортировав Microsoft.VisualBasic Пространство имен. Это действительно необходимо, только если вы полагаетесь на некоторые специальные проверки, выполняемые ChrW метод под капотом, те, на которые вы, вероятно, не должны рассчитывать в любом случае. Этот код будет выглядеть примерно так:

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

Тем не менее, это не гарантирует, что вы получите именно то, что вам нужно в этом случае (и ни один из них не был оригинальным кодом). Не все значения в Keys перечисления являются значениями ASCII, поэтому не все они могут быть непосредственно преобразованы в символ. В частности, литье Keys.NumPad1 и др. и др. в char не будет производить правильное значение.

Самый буквальный способ перевести код - использовать функцию времени выполнения VB.Net из C#

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

Если вы хотите избежать зависимости от времени выполнения VB.Net, вы можете использовать эту урезанную версию

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

C#-эквивалент ChrW(&H[YourCharCode])является Strings.ChrW(0x[YourCharCode])

Вы можете использовать https://converter.telerik.com/ для преобразования между VB и C#.

Это сработало для меня, чтобы преобразовать VB:

e.KeyChar = Microsoft.VisualBasic.ChrW(13)

В С#:

e.KeyChar == Convert.ToChar(13)

Другие вопросы по тегам