14

VB.NET 2008 では、次のステートメントを使用しました。

MyKeyChr = ChrW(e.KeyCode)

ここで、上記のステートメントを C# に変換したいと思います。

何か案は?

4

4 に答える 4

20

ChrWC#の に相当する手っ取り早い方法は、単純に値を にキャストすることcharです。

char MyKeyChr = (char)e.KeyCode;

より長くより表現力豊かなバージョンは、代わりに のような変換クラスの 1 つを使用することSystem.Text.ASCIIEncodingです。

Microsoft.VisualBasicまたは、名前空間をインポートすることで、C# で実際の VB.NET 関数を使用することもできます。ChrWこれは、内部のメソッドによって実行される特別なチェックのいくつかに依存している場合にのみ必要です。そのコードは次のようになります。

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

ただし、この場合、必要なものが正確に生成されるとは限りません (元のコードもそうではありませんでした)。列挙内のすべての値Keysが ASCII 値であるとは限らないため、すべてを直接文字に変換できるわけではありません。特に、キャスティングなどKeys.NumPad1。アル。tocharは正しい値を生成しません。

于 2011-05-19T14:58:03.063 に答える
9

C#に相当するものは次のようになります

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

ただし、e.KeyCodeUnicode コードポイントが含まれていないため、この変換は無意味です。

于 2011-05-19T14:59:14.743 に答える
4

コードを変換する最も文字通りの方法は、C# の VB.Net ランタイム関数を使用することです。

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

VB.Net ランタイムへの依存を避けたい場合は、この縮小版を使用できます

MyKeyChr = Convert.ToChar((int) (e.KeyCode & 0xffff));
于 2011-05-19T14:58:20.273 に答える
1

C# に相当するものは次のとおりChrW(&H[YourCharCode])です。Strings.ChrW(0x[YourCharCode])

https://converter.telerik.com/を使用して、VB と C# の間で変換できます。

于 2021-02-04T10:29:28.403 に答える